PHP:如何搜索数组?

时间:2018-04-30 07:10:08

标签: php arrays

我有一个像下面这样的数组。

Array
(
[4] => Array
    (
        [0] => 0
        [1] => 1
        [2] => 2
        [3] => 3
        [4] => 10
    )

[1] => Array
    (
        [0] => 0
        [1] => 1
        [2] => 2
        [3] => 3
        [4] => 10
    )

[2] => Array
    (
        [0] => 0
        [1] => 1
        [2] => 2
        [3] => 3
    )

[3] => Array
    (
        [0] => 0
        [1] => 1
        [2] => 2
        [3] => 3
    )

 )

现在,我变量,让我们说是X = 10

比,如何在上面的数组中搜索并获得包含$x数组索引

喜欢,在目前的EG中。密钥 4 1 的数组包含$x的值。

我需要那两个阵列。

任何想法?在此先感谢。

5 个答案:

答案 0 :(得分:3)

您可以循环然后使用array_search()

$array = array(...); // Your array
$x = 10;

foreach ($array as $key => $value) {
    if (array_search($x, $value)) {
        echo 'Found on Index ' . $key . '</br>';
    }
}

或者如果您需要具有那些索引的数组

$array = array(...); // Your array
$x = 10;
$result = array(); // initialize results

foreach ($array as $key => $value) {
    if (array_search($x, $value)) {
        $result[] = $array[$key]; // push to result if found
    }
}

print_r($result);

答案 1 :(得分:2)

您可以使用array_filter()仅保留包含所需值的数组:

$array = array(
    array(0, 1, 2, 3, 10),
    array(0, 1, 2, 3, 10),
    array(0, 1, 2, 3),
    array(0, 1, 2, 3)
);

$x = 10;
$out = array_filter($array, function($arr) use($x) {
    return in_array($x, $arr);
});
print_r($out);

输出:

Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 1
            [2] => 2
            [3] => 3
            [4] => 10
        )

    [1] => Array
        (
            [0] => 0
            [1] => 1
            [2] => 2
            [3] => 3
            [4] => 10
        )

)

答案 2 :(得分:2)

您也可以使用in_array

$array = array(); // Your array
$x = 10;
$result = array(); // initialize results

foreach ($array as $key => $value) {
    if (in_array($x, $value)) {
        $result[] = $array[$key]; // 
    }
}

print_r($result)

答案 3 :(得分:2)

您可以使用array_search()函数搜索数组中的值..

链接:http://php.net/manual/en/function.array-search.php

对于Exp:

$x = 10; // search value 
$array = array(...); // Your array 
$result = array(); // Result array 
foreach ($array as $key => $value) 
{ 
   if (array_search($x, $value)) 
   { 
      $result[] = $array[$key]; // push the matched data into result array.. 
   }
}

的print_r($结果);

答案 4 :(得分:0)

您可以使用array_search();

doc:http://www.php.net/manual/en/function.array-search.php