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

时间:2017-04-29 22:21:02

标签: php arrays json object

我有一个指向一堆其他数组的数组,结构类似于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就好了,但我无法打印 Global task 1Global task 2。任何打印此文本的帮助都将受到高度赞赏!

5 个答案:

答案 0 :(得分:1)

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

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

    echo $row["major-task"]["points"];
}

答案 1 :(得分:1)

像这样使用:

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"];
}

http://php.net/manual/en/control-structures.foreach.php

答案 2 :(得分:1)

您要做的是获取key

multidimensional array

为此,请使用$key variable

定义foreach() loop

示例:

foreach ($allRows as $key => $value) {
    echo $key; // Global task 1 or Global task 2
    echo $value["major-task"]["points"];
}

此外,无关紧要,但在数组中使用字符串时,我喜欢使用''。例如:

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

答案 3 :(得分:0)

我建议你使用递归函数来解析多维数组并获取值,这里有参考链接以便更好地理解:

http://php.net/manual/en/function.array-walk-recursive.php

Iterate multidimensional Array recursively and return same array structure and inserting new key/values in PHP

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

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"];
}

答案 4 :(得分:0)

这是一个关联数组,如果你想用索引访问它,你需要首先得到它的键array_keys($row)数组:

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