$myArray
(
[0] => Array
(
[0] => 27
[1] => 87
[2] => 76
[3] => 37
[4] => 69
)
[1] => Array
(
[0] => 2
[1] => 43
[2] => 56
[3] => 26
[4] => 60
)
[2] => Array
(
[0] => 36
[1] => 29
[2] => 59
[3] => 13
[4] => 65
)
[3] => Array
(
[0] => 63
[1] => 26
[2] => 29
[3] => 59
[4] => 28
)
)
我有$ myArray。 我想得到指定数字的主数组索引。
例如为: 如果数字是37,我想得到0。 如果数字是56,我想得1。 如果数字是69,我想得0。 如果数字是28,我想得到3。
我尝试使用以下功能,但我得到0.也许有错误?!?
function search2dArray($needle, $haystack) {
if (is_array($haystack)) {
for ($h = 0; $h < count($haystack); $h++) {
$arraySearch = array_keys($haystack[$h], $needle);
if ($arraySearch != 0) {
return $h;
}
}
} else {
return false;
}
}
echo search2dArray(60, $myArray);
请你能帮帮我吗?
答案 0 :(得分:2)
$myArray = array(
array(27, 87, 76, 37, 69),
array(2, 43, 56, 26, 60),
array(36, 29, 59, 13, 65),
array(63, 26, 29, 59, 28),
);
function search2dArray($needle, $haystack) {
foreach ($haystack as $key => $subarray) {
if (in_array($needle, $subarray))
return $key;
}
}
echo search2dArray(60, $myArray); //1
这应该这样做:遍历数组并检查$needle
是否在其中一个子数组中。
答案 1 :(得分:0)
array_keys()总是返回数组类型,这意味着$ array_Search可能是array(4=>60);
或空数组array()
答案 2 :(得分:0)
如果你需要获得所有等于整数的子数组元素的主数组索引,你需要做这样的事情:
<?php
$myArray = array(
array(27, 87, 76, 37, 69),
array(2, 43, 56, 26, 60),
array(36, 29, 59, 13, 65),
array(63, 26, 29, 59, 28),
);
function search2dArray($needle, $haystack) {
$results_arr = array();
foreach ($haystack as $key => $subarray) {
if (in_array($needle, $subarray))
array_push($results_arr, $key);
}
echo $needle,' was found in<br />';
foreach ($results_arr as $r_key => $master_index ){
echo '$myArray['.$master_index.']<br />' ;
}
}
search2dArray(29, $myArray); //1
?>
输出:
在29中发现了29 $ myArray的[2]