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