从多维数组中获取值

Posted

技术标签:

【中文标题】从多维数组中获取值【英文标题】:Fetch values from multidimensional array 【发布时间】:2015-05-20 23:49:19 【问题描述】:

我从下面的代码中得到一个数组

$classes = $mb->makeNumericArray($data['GetClassesResult']['Classes']['Class']);
$result = $classes;

    echo '<pre>';
        print_r($result);
    echo '</pre>';

数组是

Array
(
    [0] => Array
        (
            [ClassScheduleID] => 
            [ClassDescription] => Array
                (
                    [Description] => 
                    [Program] => Array
                        (
                            [ScheduleType] => DropIn
                        )
                )

            [Staff] => Array
                (
                    [SortOrder] => 
                
        )   

     [1] => Array
        (
            [ClassScheduleID] => 
            [ClassDescription] => Array
                (
                    [Description] => 
                    [Program] => Array
                        (
                            [ScheduleType] => DropIn
                        )
                )

            [Staff] => Array
                (
                    [SortOrder] => 
                
        )   
)   

我试图从 code at *** 获取引用的代码,

foreach($result as $res)
    
        $classscheduleid= $res['ClassScheduleID'];
        echo $classscheduleid;

     

目前我尝试了这段代码,打印ClassScheduleID

但它没有正确获取数据。它错过了[0] 的值,并且在数组的其余部分重复了结果。

谁能告诉我如何从完整的数组中获取ClassScheduleID 以及DescriptionScheduleTypesortorder

【问题讨论】:

只是为了确保您没有混合resultclasses 是吗?是否有任何代码将结果变异为类并影响数据集? @mvbrakel 我已经编辑了这个问题,两个值没有混合,你能再看看吗 我看到您编辑了问题以显示类如何变异为结果。我赞成 n-dru 的编辑答案。这应该够了吧。仅在他的回答中将classes 替换为results 以符合您更新的问题 @mvbrakel 它我可以将课程表 id 存储在数据库中,但我无法将其他人保存在数据库中,因为它们以简单的文本显示 【参考方案1】:

如果你使用foreach ($result as $row) 然后你将遍历所有 $result[0], $result[1]... 然后你回显$result[0]["ClassScheduleID"],在你的情况下,看看print_r ($result),是空的,所以这就是你没有得到结果的原因。

【讨论】:

我已经修改了这个问题,你可以再试一次,因为我的数组有价值【参考方案2】:

你需要遍历内部数组:

foreach($classes as $key => $internal_array)
    $classscheduleid= $internal_array['ClassScheduleID'];
    echo $classscheduleid;
    //again, ClassDescription is also array
    foreach($internal_array['ClassDescription'] as $internal_key => $res)

       echo " $internal_key => $res";//etc

    
 

或者递归执行:

function echo_array($a, $key)
    foreach($a as $key1 => $array1)
        if(!is_array($array1))
            echo "$key $key1 : $array1<br/>";
        else
            echo_array($array1,$key1);
        
    

echo_array($a,'');

【讨论】:

这行得通吗?当我查看代码时,似乎$res['ClassScheduleID']; 将不存在?我错过了什么吗? ClassScheduleID$internal_array 循环中的一个键,不是吗? @n-dru 我得到这样的结果 0 => 0 => 0 @n-dru 我现在得到了结果,但不是我希望的形式,因为我分别需要每个值,以便我可以将它们中的每一个保存在数据库中 好吧,您现在要求的是真正的基本 php。将echo 命令替换为对您选择的变量的赋值。然后,您可以按照自己的方式创建保存命令 您可以使用要存储值的键创建新数组,并代替 echo 将这些值推送到该数组。

以上是关于从多维数组中获取值的主要内容,如果未能解决你的问题,请参考以下文章

从 JavaScript 中的多维数组中获取数组值

从多维数组中获取值

markdown 从多维数组中获取数组值

Laravel - 无法使用刀片从多维数组中获取值

从Awk中的多维数组中的子数组获取最小值和最大值

在 laravel 5.4 刀片中通过键从多维数组中获取值