具有多维数组的Wordpress PHP MySQL查询

具有多维数组的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

当我在WordPress中运行下面的
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所说的……请注意,您不必将结果集用作对象,您也可以将结果作为关联数组的数组来获取。。。添加详细信息+链接到我的答案