繁体   English   中英

如何在多维数组中执行array_search?

[英]How To Perform array_search In Multi Dimensional Array?

我有这个代码:

$order_list = array ( array ("tangible", 1, 8, 33, 19000),
                      array ("tangible", 1, 9, 8, 19000),
                      array ("tangible", 6, 3, 24, 19000),
                      array ("tangible", 6, 2, 10, NULL),
                      array ("tangible", 1, 17, 11, 28000));

$key = array_search(3, array_column($order_list, $order_list[2]));

我想基于$order_list[$i][2]得到$order_list[$i][3]的值。

例如,如果我把:

3我将得到24回报

9我将得到8作为回报

等等...

我试图使用array_search:

$key = array_search(3, array_column($order_list, $order_list[2]));

但是我收到了这个错误:

Warning: array_column(): The column key should be either a string or an integer in /home/***/public_html/***.php on line 8

Warning: array_search() expects parameter 2 to be array, boolean given in /home/***/public_html/***.php on line 8

在这种情况下如何执行array_serach? 谢谢你。

<?php

$search = 9;

$order_list = array ( array ("tangible", 1, 8, 33, 19000),
                  array ("tangible", 1, 9, 8, 19000),
                  array ("tangible", 6, 3, 24, 19000),
                  array ("tangible", 6, 2, 10, NULL),
                  array ("tangible", 1, 17, 11, 28000));




foreach ($order_list as $string){

    if (in_array($search,$string)){
       //repsonse here
    }
}
?>

我创建了一个通用函数来获取2'd数组中当前值的下一个值。 看看下面的功能。 另请查看函数的变量描述以了解函数中的输入:

/***
 * @param array $array input array
 * @param $search_value value that need to be searched
 * @param $search_index index of inner array where current value exists
 * @return next value of current value
 */
function getNextSequence(array $array, $search_value, $search_index)
{
    $result = null;
    $key = array_search($search_value, array_column($array, $search_index));
    if ($key !== false) {
        $result = (isset($array[$key][$search_index + 1])) ? $array[$key][$search_index + 1] : null;
    }

    return $result;
}

$order_list = array(
    array("tangible", 1, 8, 33, 19000),
    array("tangible", 1, 9, 8, 19000),
    array("tangible", 6, 3, 24, 19000),
    array("tangible", 6, 2, 10, NULL),
    array("tangible", 1, 17, 11, 28000)
);

var_dump(getNextSequence($order_list, 3, 2)); //output: int(24)
var_dump(getNextSequence($order_list, 9, 2)); //output: int(8)
var_dump(getNextSequence($order_list, 10, 2)); //output: Null
var_dump(getNextSequence($order_list, 2, 2)); //output: int(10)

其他方式.....

$search = 9;

$order_list = array ( array ("tangible", 1, 8, 33, 19000),
                  array ("tangible", 1, 9, 8, 19000),
                  array ("tangible", 6, 3, 24, 19000),
                  array ("tangible", 6, 2, 10, NULL),
                  array ("tangible", 1, 17, 11, 28000));




foreach ($order_list as $string){
    if ($string[2] == $search){
    print_r( $string);  
    }  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM