【问题标题】:PHP - Add multiple items by index to multidimensional arrayPHP - 通过索引将多个项目添加到多维数组
【发布时间】:2022-01-13 11:40:17
【问题描述】:

我有一个名为 $all_cats 的数组,它输出以下内容

Array(
    [0] => WP_Term Object(
        [term_id] => 386
        [name] => Ales
        [slug] => ales
        [term_group] => 0
        [term_taxonomy_id] => 386
        [taxonomy] => product_cat
        [description] => 
        [parent] => 384
        [count] => 10
        [filter] => raw
    )
    [1] => WP_Term Object(
        [term_id] => 385
        [name] => Beers
        [slug] => beers
        [term_group] => 0
        [term_taxonomy_id] => 385
        [taxonomy] => product_cat
        [description] => 
        [parent] => 384
        [count] => 10
        [filter] => raw
     )
)

我正在尝试将“term_id”和“name”添加到索引多维数组中,以便可以输出以下内容 -

示例 A

Array
(
    [0] => Array
        (
            [parent_cats] => Array
                (
                    [id] => 385,
                    [name] => "Beers"
                )
        )
    [1] => Array
        (
            [parent_cats] => Array
                (
                    [id] => 386,
                    [name] => "Ales"
                )

        )
)

我尝试了以下方法,但似乎无法将每个项目添加到同一个键中。如何添加每个 term_id 和名称,使其输出类似于示例 A?

$full_cats = array();

foreach ($all_cats as $cat_term) {

    $parent_termID = $cat_term->term_id;
    $parent_title = $cat_term->name;

    // this doesnt work
    $full_cats[]['parent_cats']['id'] = $parent_termID;
    $full_cats[]['parent_cats']['name'] = $parent_title;

    // this doesnt work
    array_push($full_cats[]['parent_cats']['id'],$parent_termID);
    array_push($full_cats[]['parent_cats']['name'],$parent_title);

}

如何添加每个 term_id 和名称,使其输出类似于示例 A?

【问题讨论】:

  • 每次您以$full_cats[]... = something 开头时,[] 都会在该级别创建一个新条目。但是您不想要两个新条目,您只想要一个包含术语 id 和名称的新条目。所以先将它们放入一个数组中,然后将其分配给$full_cats[]['parent_cats']

标签: php arrays multidimensional-array array-push


【解决方案1】:
$full_cats = array();

foreach ($all_cats as $cat_term) {
    $parent_termID = $cat_term->term_id;
    $parent_title = $cat_term->name;

    // this doesnt work
    $full_cats[]=array(
                      "parent_cats"=>array(
                                       "id"   => $parent_termID,
                                       "name" => $parent_title
                      )
                  );
}

上面的代码应该可以工作

  • 你需要学习multi和assoc数组的结构

【讨论】:

  • 您需要学习 multi 和 assoc 数组的结构 - 是的,我知道 :) 从您的回答中得到,谢谢!
【解决方案2】:
$full_cats = array();
$indx = 0;

foreach ($all_cats as $cat_term) {

  $parent_termID = $cat_term->term_id;
  $parent_title = $cat_term->name;

  // this doesnt work
  $full_cats[$indx]['parent_cats']['id'] = $parent_termID;
  $full_cats[$indx]['parent_cats']['name'] = $parent_title;
  $indx++;

  // this doesnt work
  // array_push($full_cats[]['parent_cats']['id'],$parent_termID);
  // array_push($full_cats[]['parent_cats']['name'],$parent_title);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2011-05-23
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多