在给定数组中的另一个变量时理解PHP中的数组

在给定数组中的另一个变量时理解PHP中的数组,php,arrays,Php,Arrays,请看Cha的答案,我们非常接近最终解决方案。我们正在用这些数据调试代码 -- 与代码中未解决的问题相关的问题 如何引用以下数组中的php-元素? 我有以下数据 Array ( [1] => Array ( [tag] => Array ( [0] => php [1] => scripts

请看Cha的答案,我们非常接近最终解决方案。我们正在用这些数据调试代码

  • --

    与代码中未解决的问题相关的问题 如何引用以下数组中的php-元素?

    我有以下数据

    Array
    (
        [1] => Array
            (
                [tag] => Array
                    (
                        [0] => php
                        [1] => scripts
                    )
    
            )
    
        [2] => Array
            (
                [tag] => Array
                    (
                        [0] => ssh
                        [1] => network
                    )
    
            )
    
    )
    
    其中数组分别代表
    标记和
    问题id
    标记。
    换句话说,变量
    $tags\u和\u id
    有一列
    question\u id
    ,该列仍然有一个子列
    tag
    ,并且仍然有每个标签

    我想知道如何引用标签php

    我运行时未成功获得任何输出

    echo $tags_and_id[1]['tag'][0];
    

    如果您想添加有关每个问题的更多信息,只需添加到
    $end\u数组[1]
    。 这是我的第一个
    foreach
    语句创建的数组:

    // The end result turns out to be something like this:
        array(
              1 => array(
                           'tags' => array(
                                          0 => "php",
                                          1 => "sql"),
                        )
             );
    


    如果您想添加关于每个问题的更多信息,只需添加到
    $end\u array[1]
    。 这是我的第一个
    foreach
    语句创建的数组:

    // The end result turns out to be something like this:
        array(
              1 => array(
                           'tags' => array(
                                          0 => "php",
                                          1 => "sql"),
                        )
             );
    


    如果
    打印失败,那么在此之前就出了问题。您的数据可能没有按照您认为的方式进行结构化

    如果您只有标签和问题名称,我可以建议您只存储为一个单层数组,如下所示:

    array(
    'php' => '7',
    'sql' => '7',
    'python' => '3'
    )
    
    如果你有其他的东西要储存,那么是的,你必须做你正在做的事情。在这种情况下,如果您不能使用括号中的键访问数组,那么您的键可能不是您认为的那样,或者您的代码在某个地方出了问题

    我查看了您的代码,为什么要访问像
    $row[0]
    这样的查询结果,而不是
    $row['question\u id']

    此外,您不能
    打印($result\u tags)
    ,因为来自查询的数据实际上不是由PHP存储的,它只是被引用的。因此,您必须使用while循环来遍历它,因为脚本将一次调用一行结果

    您会说:
    foreach($result\u tags as$question\u id=>$data)
    这没有意义,因为除了对查询的引用外,
    $result\u tags
    没有任何值,可以用来一次调用一行结果。相反,您希望执行以下操作:

    while( $row2 = pg_fetch_array( $result_tags )) {
        $question_id = $row2['questions_question_id'];
        $data = $row2['data'];
        $end_array[$question_id]['tags'][] = $data;  
          // you can't have your $data['tag'] as that refers to the 
          // value of an array that doesn't exist
    }
    

    如果
    print\r
    失败,那么在此之前就出现了问题。您的数据可能没有按照您认为的方式进行结构化

    如果您只有标签和问题名称,我可以建议您只存储为一个单层数组,如下所示:

    array(
    'php' => '7',
    'sql' => '7',
    'python' => '3'
    )
    
    如果你有其他的东西要储存,那么是的,你必须做你正在做的事情。在这种情况下,如果您不能使用括号中的键访问数组,那么您的键可能不是您认为的那样,或者您的代码在某个地方出了问题

    我查看了您的代码,为什么要访问像
    $row[0]
    这样的查询结果,而不是
    $row['question\u id']

    此外,您不能
    打印($result\u tags)
    ,因为来自查询的数据实际上不是由PHP存储的,它只是被引用的。因此,您必须使用while循环来遍历它,因为脚本将一次调用一行结果

    您会说:
    foreach($result\u tags as$question\u id=>$data)
    这没有意义,因为除了对查询的引用外,
    $result\u tags
    没有任何值,可以用来一次调用一行结果。相反,您希望执行以下操作:

    while( $row2 = pg_fetch_array( $result_tags )) {
        $question_id = $row2['questions_question_id'];
        $data = $row2['data'];
        $end_array[$question_id]['tags'][] = $data;  
          // you can't have your $data['tag'] as that refers to the 
          // value of an array that doesn't exist
    }
    

    只要数组包含名为
    question\u id
    tag
    print\r
    的列,就不需要更改任何内容。如果您对数组中的内容有任何疑问,请运行
    print\r($result\u tags)在foreach循环之外。确定。。我看到了。发生的事情是,你正在浏览每一张唱片,然后我试图再次浏览每一张唱片。我正在用完整的第二个while编辑我的文章。你从实际的数据库中得到了什么(在
    while
    循环中)。现在PostGres正在烦恼,没有什么需要更改的,只要它最终得到一个数组,该数组包含一个名为
    question\u id
    tag
    print\r
    的列,如果您对数组中的内容有任何疑问,请运行
    print\r($result\u tags)在foreach循环之外。确定。。我看到了。发生的事情是,你正在浏览每一张唱片,然后我试图再次浏览每一张唱片。我正在用完整的第二个while编辑我的文章。你从实际的数据库中得到了什么(在
    while
    循环中)。现在PostGres正在烦恼最终的PHP代码现在应该在我的答案中。只是一个提示,你可以使用print\r($tag)查看整个数组最终的PHP代码现在应该在我的答案中。只是一个提示,你可以使用print\r($tag)查看整个数组