【发布时间】:2019-10-28 00:16:15
【问题描述】:
我正在尝试在多维数组中搜索数字一 [1]。它使用标准数组 [$array_1] 确实有效,但在嵌入数组 [$array_2] 和 [$array_3] 时无效。
在脚本的最后,您可以找到我尝试过的内容。
想要的行为:
返回值的搜索,指示是否找到该值。 索引位置都可以,或者返回数字的数量或找到的数字的重复数字。
我的计划是将结果移动到一个变量中并检查结果是否为空。如果为 null 表示它没有找到任何搜索结果。我使用 null 因为零 [0] 可以引用索引位置。
<pre>
<?php
$search_for_value = 1;
/**
* ---------------------------------
* Array.
* ---------------------------------
*/
$array_1 = [3, 2, 1];
/**
* ---------------------------------
* Multidimensional arrays.
* ---------------------------------
*/
/**
* Value 1 is exists in the array.
*/
$array_2 = [
[2],
[1]
];
echo ("-- array_2 ---\n\n");
print_r($array_2);
/**
* Value 1 is missing in the array.
*/
$array_3 = [
[4],
[5]
];
echo ("-- array_3 ---\n\n");
print_r($array_3);
/**
* Functions
*/
function find_value($search_for_value, $array_selected) {
return(array_search($search_for_value, $array_selected));
};
/**
* ---------------------------------
* Searches
* ---------------------------------
*/
// Search for value in array_1
$array_selected = $array_1;
print_r(
find_value(
$search_for_value, $array_selected
)
);
// Search for value in array_2
$array_selected = $array_2;
print_r( # <==== Not working.
find_value(
$search_for_value, $array_selected
)
);
?>
【问题讨论】:
-
您需要实现递归搜索。可能类似于stackoverflow.com/q/28472779/296555。
-
您可以使用 is_array 检查是否存在子数组,如果一层深度足够,则调整您的查找。但您也可以按照已经提出的递归方式执行此操作。
标签: php arrays multidimensional-array