具有多维数组的Wordpress PHP MySQL查询
当我在WordPress中运行下面的具有多维数组的Wordpress PHP MySQL查询,php,mysql,wordpress,foreach,Php,Mysql,Wordpress,Foreach,当我在WordPress中运行下面的PHP而不使用foreach时,我成功地打印了一个多维数组。当我使用foreach时,它返回一个错误500,我只是尝试循环遍历结果,以便能够选择每个名称,然后将其推送到另一个数组 如果有人能帮助我在这个阵列中循环,那就太好了 Array ( [0] => stdClass Object ( [term_taxonomy_id] => 26 [taxonomy] => pr
PHP
而不使用foreach
时,我成功地打印了一个多维数组。当我使用foreach
时,它返回一个错误500
,我只是尝试循环遍历结果,以便能够选择每个名称
,然后将其推送到另一个数组
如果有人能帮助我在这个阵列中循环,那就太好了
Array
(
[0] => stdClass Object
(
[term_taxonomy_id] => 26
[taxonomy] => product_brand
[name] => Authentic Cheese
[slug] => authentic-cheese
)
[1] => stdClass Object
(
[term_taxonomy_id] => 27
[taxonomy] => product_brand
[name] => Robot
[slug] => robot
)
)
PHP
$q2 = "SELECT t.term_taxonomy_id, t.taxonomy, e.name, e.slug
FROM wp_term_taxonomy t
INNER JOIN wp_terms e ON t.term_taxonomy_id = e.term_id
WHERE taxonomy = 'product_brand'";
$r2 = $wpdb->get_results($q2);
print_r($r2);
foreach ($r2 as $row) {
echo $row['name'];
}
结果中有一个对象数组。因此,请使用:
foreach ($r2 as $row) {
echo $row->name;
}
结果中有一个对象数组。因此,请使用:
foreach ($r2 as $row) {
echo $row->name;
}
请从您的
print\r
中注意,它是对象的数组,而不是数组的数组。所以你需要这样做
foreach ($r2 as $object) {
echo $object->name;
}
请从您的
print\r
中注意,它是对象的数组,而不是数组的数组。所以你需要这样做
foreach ($r2 as $object) {
echo $object->name;
}
您有一个一维对象数组,确切地说是
stdClass
的实例:
Array
(
[0] => stdClass Object //<== stdClass OBJECT!!
或者,如果确实需要,您可以简单地将对象强制转换为数组:
foreach ($array as $k => $o)
{
$array[$k] = (array) $o;//cast and re-assign
}
下次在$array
上循环时,对象将消失,取而代之的是关联数组。。。不过,实际上,这个演员表演业务只是开销,如果我是你,我真的会使用这些对象。当然,如果可以更改获取模式,则可以更改它,以便将所有结果作为关联数组获取 根据,可以将第二个参数传递给
get\u results
方法,该方法指定获取方法:
这是确保$r2
实际上是一个关联数组的最佳方法
要引用我所依据的文档,请执行以下操作:
可以使用get_结果从数据库中提取通用的多行结果。函数以数组形式返回整个查询结果,如果没有结果,则返回NULL。该数组的每个元素对应于查询结果的一行,并且与get_行一样,可以是对象、关联数组或编号数组
查询(字符串)要运行的查询。将此参数设置为null将返回上一个查询的缓存结果中的数据 输出类型
四个预定义常数之一。默认为对象。有关更多信息,请参见选择行及其示例。
对象-结果将作为行对象的数字索引数组输出。
OBJECT_K-结果将作为行对象的关联数组输出,使用第一列的值作为键(重复项将被丢弃)。
ARRAY_A-结果将作为关联数组的数字索引数组输出,使用列名作为键。
ARRAY_N-结果将作为数值索引数组的数值索引数组输出
您有一个一维对象数组,确切地说是
stdClass
的实例:
Array
(
[0] => stdClass Object //<== stdClass OBJECT!!
或者,如果确实需要,您可以简单地将对象强制转换为数组:
foreach ($array as $k => $o)
{
$array[$k] = (array) $o;//cast and re-assign
}
下次在$array
上循环时,对象将消失,取而代之的是关联数组。。。不过,实际上,这个演员表演业务只是开销,如果我是你,我真的会使用这些对象。当然,如果可以更改获取模式,则可以更改它,以便将所有结果作为关联数组获取 根据,可以将第二个参数传递给
get\u results
方法,该方法指定获取方法:
这是确保$r2
实际上是一个关联数组的最佳方法
要引用我所依据的文档,请执行以下操作:
可以使用get_结果从数据库中提取通用的多行结果。函数以数组形式返回整个查询结果,如果没有结果,则返回NULL。该数组的每个元素对应于查询结果的一行,并且与get_行一样,可以是对象、关联数组或编号数组
查询(字符串)要运行的查询。将此参数设置为null将返回上一个查询的缓存结果中的数据 输出类型
四个预定义常数之一。默认为对象。有关更多信息,请参见选择行及其示例。
对象-结果将作为行对象的数字索引数组输出。
OBJECT_K-结果将作为行对象的关联数组输出,使用第一列的值作为键(重复项将被丢弃)。
ARRAY_A-结果将作为关联数组的数字索引数组输出,使用列名作为键。
ARRAY_N-结果将作为数值索引数组的数值索引数组输出 您可以在WordPress中使用:
<?php names = wp_list_pluck( $your_array, 'name' ); ?>
您可以在WordPress中使用:
<?php names = wp_list_pluck( $your_array, 'name' ); ?>
那不是2D数组,而是对象数组。它是对象
而不是数组
。。。正如@EliasVanOotegem所说的……请注意,您不必将结果集用作对象,您也可以将结果作为关联数组的数组来获取。。。添加了详细信息+指向我答案的链接这不是2D数组,而是对象数组这是对象
不是数组
。。。正如@EliasVanOotegem所说的……请注意,您不必将结果集用作对象,您也可以将结果作为关联数组的数组来获取。。。添加详细信息+链接到我的答案