我有一个类别和子类别的多维数组。 我想得到每个类别和子类别形式数组的ID。 我的阵列是这样的。
阵 ( [1] =>排列 ( [id] => 14 [name] =>第1类 [parent_id] => 13 [sub_menu] =>排列 ( [2] =>排列 ( [id] => 15 [name] =>第2类 [parent_id] => 14 [sub_menu] =>排列 ( [6] =>排列 ( [id] => 19 [name] =>第6类 [parent_id] => 15 [sub_menu] =>排列 ( ) ) ) ) [4] =>排列 ( [id] => 17 [name] =>第4类 [parent_id] => 14 [sub_menu] =>排列 ( ) ) ) ) )
public function get($data)
{
foreach($data as $key=>$value1)
{
if($key=='id');
{
$data= $value1['id'];
}
if(is_array($key))
{
$data=$this->get($kay);
}
}
return $data;
}
$val=$this->get($data);
print_r($val);

答案 0 :(得分:0)
在上面的代码中,您正在循环(并因此触摸数组中的每个元素),但每次执行此操作时:
$data= $value1['id'];
或者这个:
$data=$this->get($kay);
(顺便说一句,误将$key
误称为$kay
)
您覆盖$data
的值。所以最好的情况是你得到最后一个被覆盖的$ id。 (您还可以在不同时间将键和值与数组混合在一起。)
假设你最后想要一个扁平数组和所有那些数组,这样的东西可能会这样做(这不是为了运行代码 - 你需要做一些调试):
public function get($data)
{
if ($data['id'])
$rtn = array($data['id']);
else
$rtn = array();
foreach($data as $v)
{
if(is_array($v))
{
$rtn = array_merge($rtn, $this->get($v));
}
}
return $rtn;
}
$val=$this->get($data);
print_r($val);
虽然这个应用程序并不是特别困难,但编写递归函数并不是任何编程的起始技能。因为看起来你对如何处理数组(没有递归)仍然有点朦胧,所以可能需要学习一些教程。