PHP获取指向另一个数组对象的数组字符串

PHP获取指向另一个数组对象的数组字符串,php,arrays,json,object,Php,Arrays,Json,Object,我有一个数组,它指向一堆其他数组,结构类似于JSON对象。这是它的结构: $allRows= array( "Global task 1"=> array( "major-task"=> array( "points"=> 850, ), "minor-task"=> array( array( "points"=> 400,

我有一个数组,它指向一堆其他数组,结构类似于JSON对象。这是它的结构:

$allRows= array(
    "Global task 1"=> array(
        "major-task"=> array(
            "points"=> 850,
        ),
        "minor-task"=> array(
            array(
                "points"=> 400,
                "task"=> "Minor task 1",
            ),
            array(
                "points"=> 200,
                "task"=> "Minor task 2",
            ),
            array(
                "points"=> 250,
                "task"=> "Minor task 3",
            ),
        )
    ),
    "Global task 2"=> array(
        "major-task"=> array(
            "points"=> 850,
        ),
        "minor-task"=> array(
            array(
                "points"=> 400,
                "task"=> "Minor task 1",
            ),
            array(
                "points"=> 200,
                "task"=> "Minor task 2",
            ),
            array(
                "points"=> 250,
                "task"=> "Minor task 3",
            ),
        )
    ),
);
我试图通过以下方式访问其中的每一项:

foreach ($allRows as $row) {
    // Print Global task 1, Global task 2, etc
    echo $row[0]; // unsure how to acquire this 'Global task x' text

    // I've already accessed this just fine
    echo $row["major-task"]["points"];
}

我得到了后一个
echo
很好,但是我无法打印
全局任务1
全局任务2
。任何帮助打印此文本将不胜感激

任务是
$allRows
的关键,您需要在foreach中捕获它们:

foreach ($allRows as $taskName => $row) {
    echo $taskName; // "Global task 1"

    echo $row["major-task"]["points"];
}
像这样使用它:

foreach ($allRows as $key => $row) {
    // Print Global task 1, Global task 2, etc
    echo $key;

    // I've already accessed this just fine
    echo $row["major-task"]["points"];
}

您要做的是获取多维数组的

为此,使用
foreach()循环定义a
$key变量

例如:

foreach ($allRows as $key => $value) {
    echo $key; // Global task 1 or Global task 2
    echo $value["major-task"]["points"];
}
另外,并不重要,但在数组中使用字符串时,我喜欢使用“”。例如:

echo $value['major-task']['points'];

我建议您使用递归函数解析多维数组并获取值,以下是参考链接,以便更好地理解:

以下是您当前实施的解决方案:

foreach ($allRows as $key=>$row) {
    // Print Global task 1, Global task 2, etc
    //echo $row[0]; // unsure how to acquire this 'Global task x' text
    echo $key;
    // I've already accessed this just fine
    echo $row["major-task"]["points"];
}

这是一个关联数组,如果要使用索引访问它,需要先获取其键数组
array\u keys($row)

 foreach ($allRows as $row) {
    $keys = array_keys($row);
    print_r($row[$keys[0]]);
}

获取foreach循环中的键和值,如so
foreach($taskName=>allRows as$taskName=>$row){//result here!}
谢谢,我最初尝试过这个方法,但一直尝试
echo$row而不是任务名。当它允许我的时候,我会接受的!