【问题标题】:Returning Separate Lists of Items from a Multidimensional Array in PHP从 PHP 中的多维数组返回单独的项目列表
【发布时间】:2016-05-19 13:28:24
【问题描述】:

我有以下数组:

$items = array(
'item_1' => array('sub-item_1_A','sub-item_1_B', 'sub-item_1_C', 'sub-item_1_D', 'sub-item_1_E'),
'item_2' => array('sub-item_2_A','sub-item_2_B', 'sub-item_2_C'),
'item_3' => array('sub-item_3_A','sub-item_3_B', 'sub-item_3_C', , 'sub-item_3_D'),
'item_4' => array('sub-item_4_A','sub-item_4_B'),
'item_5' );

我要做的第一件事是返回一个仅包含项目的列表——即以下内容:

item_1, item_2, item_3, item_4, item_5

我需要这个列表本身。

我还需要使用该列表来创建每个子数组的单独列表。即,这是一个列表:

'sub-item_1_A','sub-item_1_B', 'sub-item_1_C', 'sub-item_1_D', 'sub-item_1_E'

这是下一个列表:

'sub-item_2_A','sub-item_2_B', 'sub-item_2_C'

等等。

关于如何做到这一点的任何想法?

谢谢。

更新 我不想将子项作为字符串返回,而只是希望能够单独访问每个项的子项。

【问题讨论】:

  • 我知道你需要做几件事。你试过什么了?有什么尝试吗?
  • 我尝试了类似以下的方法(我没有保存我的尝试): foreach ( $items as $item ) { echo 'Item: ' 。 $项目[0];我相信每次只返回“item5”。我试过没有 [0] 并且它也没有工作(我想我有一个错误,如果有记忆的话)。注意——这是一个简单的尝试获取第一个订单项目的列表[我的第一个需要]。

标签: php arrays multidimensional-array foreach


【解决方案1】:

Online Check,一个工作示例。

要“返回仅包含项目的列表”,您只需使用 array_keys

$list_of_first = array_keys($items);

返回仅包含项目的列表:

Array
(
    [0] => item_1
    [1] => item_2
    [2] => item_3
    [3] => item_4
    [4] => item_5
)

您可以在此处使用 implode 将其更改为列表。

剩下的你需要一个foreach loop 并使用 implode 将数组项获取为你想要的字符串。

foreach($items as $val){
    echo implode(", ", $val)."<br/>";
}

子数组列表:

sub-item_1_A, sub-item_1_B, sub-item_1_C, sub-item_1_D, sub-item_1_E
sub-item_2_A, sub-item_2_B, sub-item_2_C
sub-item_3_A, sub-item_3_B, sub-item_3_C, sub-item_3_D
sub-item_4_A, sub-item_4_B
sub-item_5_A, sub-item_5_B

【讨论】:

  • 谢谢。 array_keys 是我一直在寻找的。就第二部分而言——我实际上不希望将值作为字符串返回。我想分别(并以编程方式)访问每个列表。因此,是否可以修改您的答案以向我展示如何使用foreach 来简单地单独返回每个子数组?
  • 是的,为什么不呢?你想知道什么?
  • @Moshe,你可以找到$val,这是子数组,这是从foreach返回的。
【解决方案2】:
$items = array(
            'item_1' => array('sub-item_1_A','sub-item_1_B', 'sub-item_1_C', 'sub-item_1_D', 'sub-item_1_E'),
            'item_2' => array('sub-item_2_A','sub-item_2_B', 'sub-item_2_C'),
            'item_3' => array('sub-item_3_A','sub-item_3_B', 'sub-item_3_C',  'sub-item_3_D'),
            'item_4' => array('sub-item_4_A','sub-item_4_B'),
            'item_5' => '');

foreach($items as $key => $item)
{
    echo '<h3>'.$key.'</h3>';
    if(!empty($item))
    {
        foreach($item as $k => $v)
        {
            echo '<h5>'.$v.'</h5>';
        }
    }
}

这会给你

item_1
sub-item_1_A
sub-item_1_B
sub-item_1_C
sub-item_1_D
sub-item_1_E
item_2
sub-item_2_A
sub-item_2_B
sub-item_2_C
item_3
sub-item_3_A
sub-item_3_B
sub-item_3_C
sub-item_3_D
item_4
sub-item_4_A
sub-item_4_B
item_5

【讨论】:

  • 这正是我所需要的。谢谢。
  • 太棒了 ;) 很高兴帮助你 ;)
【解决方案3】:

希望这会有所帮助:

首先,您需要获取所有数组键并将其内爆以获取项目列表。要获取子项目列表,您需要遍历数组值。

<?php

$items = array(
'item_1' => array('sub-item_1_A','sub-item_1_B', 'sub-item_1_C', 'sub-item_1_D', 'sub-item_1_E'),
'item_2' => array('sub-item_2_A','sub-item_2_B', 'sub-item_2_C'),
'item_3' => array('sub-item_3_A','sub-item_3_B', 'sub-item_3_C', 'sub-item_3_D'),
'item_4' => array('sub-item_4_A','sub-item_4_B'),
'item_5' => "");

echo $itemsList = implode(',',array_keys($items))."\n";
$subItemsList = array_values($items);
foreach ($subItemsList as $key=>$value) {
    if (!empty($value))
        echo $subItemsList = implode(',',$value)."\n";

}

【讨论】:

    猜你喜欢
    • 2013-05-18
    • 2021-03-23
    • 2013-10-19
    • 2012-12-10
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多