PHP:使用条件连接数组

时间:2016-08-16 08:29:19

标签: php arrays

我正在尝试读取会话变量,创建数组并将它们连接起来:

会话变量示例:

Array
(
[0] => Array
    (
        [idArticle] => 224
        [ntypeArticle] => 1
    )
[1] => Array
    (
        [idArticle] => 556
        [ntypeArticle] => 2
    )
[2] => Array
    (
        [idArticle] => 312
        [ntypeArticle] => 1
    )   
)

我需要逐个读取这个数组,并按“ntypeArticle”创建数组。

如果ntypeArticle=1create array1

如果ntypeArticle=2create array2

我的代码:

$type1 = array();
$type2= array();
$typeAll = array();
foreach($_SESSION['cart'] as $item)
{

    if ($item['ntypeArticle'] == 1) {
        $type1= array ( "Type" => '1', );
    } else {
        $type2= array ( "Type" => '2', );
    }
    array_push($typeAll , $type1 , $type2);
}

但这会创建空数组。

通缉输出:

Array
(
[0] => Array
(
    [type] => 1
)
[1] => Array
(
    [type] => 2
)
[2] => Array
(
    [type] => 1
)
)

4 个答案:

答案 0 :(得分:2)

您只需要这么简单:

$out = [];
foreach($_SESSION['cart'] as $k => $item)
{
    $out[$k] = ['Type' => $item['ntypeArticle']];
}

现在,如果您输出$out变量,则可以得到所需内容。

答案 1 :(得分:1)

试试这个

$newOp1 = array()
$newOp2 = array()
foreach($_SESSION['cart'] as $item){
    if($item["ntypeArticle"] == 1){
       $newOp1[]['type'] = $item["ntypeArticle"]
    }else{
       $newOp2[]['type'] = $item["ntypeArticle"]
    }
}
print_r($newOp1);
print_r($newOp2);

答案 2 :(得分:1)

根据您提供的信息,您要做的就是将nTypeArticle提取为type元素。就是这样。

//array from your example
$inputArray = array(
    array(
        'idArticle' => 224,
        'nTypeArticle' => 1
    ),
    array(
        'idArticle' => 556,
        'nTypeArticle' => 2
    ),
    array(
        'idArticle' => 312,
        'nTypeArticle' => 1
    ),
);

$outputArray = array_map(function($inputElement) {
    return array('type' => $inputElement['nTypeArticle']);
}, $inputArray);

var_dump($outputArray);
//Output (the same as yours):
//array (size=3)
//  0 => 
//    array (size=1)
//      'type' => int 1
//  1 => 
//    array (size=1)
//      'type' => int 2
//  2 => 
//    array (size=1)
//      'type' => int 1

答案 3 :(得分:1)

for

这可以为您提供所要求的内容。 (代码未经过测试)