【问题标题】:What is the best approach to create an array having specific key's value from a multidimensional array?从多维数组创建具有特定键值的数组的最佳方法是什么?
【发布时间】:2020-08-10 08:17:06
【问题描述】:

你好,我有一个多维数组 每个数组都包含"id_category"的键

我正在尝试通过多维数组循环存储键 "id_category" 的值。

这里是数组 & php 编译器

https://paiza.io/projects/H8FwXLAZc438-XA-hnmNHQ?language=php

$save_id_category = [];
foreach($array as $ct){
    $save_id_category[] = $ct['id_category'];
}
print_r($save_id_category); // this gets me only one record.

我可以遍历所有数组并保存数据,但这不是一个好主意。

如果我们有更好的方法,请告诉我 为了这。 谢谢

【问题讨论】:

标签: php arrays multidimensional-array


【解决方案1】:

您可以使用递归函数查找所有id_category 值,首先使用array_column 获取当前级别的所有值,然后遍历每个数组元素的子元素以将其类别添加到列表中:

function get_categories($array) {
    $categories = array_column($array, 'id_category');
    foreach ($array as $ct) {
        $categories = array_merge($categories, get_categories($ct['children'] ?? array()));
    }
    return $categories;
}

print_r(get_categories($arrayone));

输出(用于您的样本数据):

Array
(
    [0] => 12
    [1] => 13
    [2] => 15
    [3] => 16
    [4] => 48
    [5] => 68
    [6] => 58
    [7] => 282
    [8] => 17
    [9] => 18
    [10] => 85
    [11] => 52
    [12] => 53
    [13] => 86
    [14] => 54
    [15] => 55
    [16] => 56
    [17] => 217
    [18] => 275
    [19] => 69
    [20] => 70
    [21] => 71
    [22] => 278
    [23] => 59
    [24] => 60
    [25] => 61
    [26] => 283
)

【讨论】:

  • 我正在从这里生成“arrayone” $arrayone = Category::getNestedCategories(19, 1);他们有什么方法可以循环遍历arrayone函数并更改参数,即“19”吗?
  • @newphpdev 我不确定你的意思?也许像$categories = [1, 5, 12]; foreach ($categories as $category) { $arrayone = Category::getNestedCategories($category, 1); }
  • 我试图通过将两个数组键合并成一个数组来形成一个数组
  • 这个 - 数组([0] => 数组([id] => 5)[1] => 数组([id] => 8))
  • 至此 - 数组 ( [0] => 5 ) ( [1] => 8 )
猜你喜欢
  • 1970-01-01
  • 2021-05-20
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
相关资源
最近更新 更多