【问题标题】:Reduce down level of multidimensional array in PHP降低 PHP 中多维数组的级别
【发布时间】:2018-10-20 21:03:06
【问题描述】:

我想知道将这个数组减少一个级别的最有效方法是什么,最好在 PHP 中没有循环。这是 mysqli_fetch_all() 的结果。

Array
(
    [0] => Array
        (
            [ID] => 648546
        )

    [1] => Array
        (
            [ID] => 648552
        )

    [2] => Array
        (
            [ID] => 650046
        )

    [3] => Array
        (
            [ID] => 652732
        )

    [4] => Array
        (
            [ID] => 652738
        )

    [5] => Array
        (
            [ID] => 652756
        )

)

我想要的结果是

array(648546,648552,650046,652732,...)

它来自的简单查询示例很简单:

SELECT mytable.ID FROM mytable WHERE status =1

【问题讨论】:

标签: php mysql arrays mysqli


【解决方案1】:

你可以使用array_map():

$new_array = array_map(function($v){return $v['ID'];}, $old_array);

【讨论】:

    【解决方案2】:

    This should do it for PHP 5.5+

    $result = array_column($array, 'ID');
    

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      SELECT GROUP_CONCAT(mytable.ID)
      FROM mytable 
      WHERE status = 1
      GROUP BY status
      

      它应该返回 1 行 ID 作为逗号分隔的列表。

      【讨论】:

      • GROUP_CONCAT 列有一个服务器定义的最大长度。默认情况下,我认为它是 1,024 个字符,所以如果你有超过 150 个(ish)6 位数的 ID,这将不起作用。
      • 不是纯 PHP,但仍然是一个很棒的答案,同样也解决了问题!
      • 如果结果需要超过 1024 个字符,您可以使用 SET group_concat_max_len = val; 更改组 concat 的最大长度。见[group_concat][dev.mysql.com/doc/refman/8.0/en/…)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 2021-05-15
      • 2023-03-14
      相关资源
      最近更新 更多