【发布时间】:2020-03-07 19:11:01
【问题描述】:
我有以下功能可以打印键值设置。
但它没有返回数组中的值,而是当我在 foreach 循环中使用 echo 打印它时,它显示了正确的执行。
$array = [
'1' => true,
['2' => false, '4' => true],
'3' => true
];
$arraytrueElements = array_function($array);
echo "<pre>";
print_r($arraytrueElements);
function array_function($arr){
$i=0;
foreach($arr as $key => $val){
if(is_array($val)){
array_function($val);
}else{
if($val == true){
$str[$key] = $key;
echo "{$key}" .", \t";
}
}
}
return $str;
}
输出, 1、4、3,
Array
(
[1] => 1
[3] => 3
)
预期输出,
输出, 1、4、3,
Array
(
[1] => 1,
[4] => 4,
[3] => 3
)
当我将这行代码修改为这个时,$str[$key] = array_function($val);
然后我有一个包含所有值的数组,但是如果已经在 echo 中显示并在 $str 数组中分配,为什么要添加它。 有点像这样作为数组内部的数组元素,而不是预期的数组输出。
Array
(
[1] => 1
[2] => Array
(
[4] => 4
)
[3] => 3
)
【问题讨论】:
-
这还不清楚。请准确说明你想要得到什么,给出什么样的输入,并举例说明。是否要递归抓取值恰好为
true的所有数组键? -
是的,你是对的