【问题标题】:PHP Get Array String Pointing to Another Array ObjectPHP获取指向另一个数组对象的数组字符串
【发布时间】:2017-09-27 19:13:35
【问题描述】:

我有一个数组,它指向一堆其他数组,其结构类似于 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。任何打印此文本的帮助将不胜感激!

【问题讨论】:

  • 像这样foreach ($allRows as $taskName => $row){ // result here ! } 获取 foreach 循环中的键和值

标签: php arrays json object


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,我最初尝试过这个但一直尝试echo $row;而不是taskName。当它允许我时会接受这个!
【解决方案2】:

像这样使用它:

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

【讨论】:

    【解决方案3】:

    您要做的是为multidimensional array 获取key

    为此,将$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'];
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多