2017-12-20 12 views
-1

$ _SOSSION配列にいくつかの$ _POST値を追加しようとしていますが、最良の方法が見つからないようです。 array_pushとPHP - キーなしで配列にプッシュ

結果():

array(1) { 
    'product_ids' => 
    array(2) { 
    [0] => 
    string(1) "9" 
    [1] => 
    array(1) { 
     [0] => 
     string(2) "14" 
    } 
    } 
} 

期待される結果:

array(1) { 
    'product_ids' => 
    array(2) { 
    [0] => 
    string(1) "9" 
    [1] => 
    string(2) "14" 
    } 
    } 
} 

コード:

if(!empty($_SESSION['product_ids'])){ 
    array_push($_SESSION['product_ids'],$_POST['id']); 
} else { 
    $_SESSION['product_ids'] = $_POST['id']; 
} 

$ _POST配列:

array(1) { 
    'id' => 
    array(1) { 
    [0] => 
    string(2) "14" 
    } 
} 

$ _SESSION配列:$_POST['id']はIDの配列である場合、それは$_POST['ids']名前を付ける必要があり

Emtpy

+0

*正確に何を*正確に*しようとしていますか? – deceze

+0

実際のコードを掲載することはできますか?どのように配列が見え、どのようにしてそれを「プッシュ」しようとしていますか? – ArtOsi

+0

変数の 'var_dump()'とプッシュを行う実際のコードを行います。 [mcve]を作成します。 – FrankerZ

答えて

4

。明確な命名法を使用してください。

... else { 
    $_SESSION['product_ids'] = $_POST['id']; 

最初あなたは、既存の配列に値として配列をプッシュしている...配列として$_SESSION['product_ids'] ...

if(!empty($_SESSION['product_ids'])){ 
    array_push($_SESSION['product_ids'],$_POST['id']); 

を作成しています。これら2つの配列を新しい配列にマージしたい場合は、

if (empty($_SESSION['product_ids'])) { 
    $_SESSION['product_ids'] = $_POST['ids']; 
} else { 
    $_SESSION['product_ids'] = array_merge($_SESSION['product_ids'], $_POST['ids']); 
} 
+3

または少なくともPHP 7.0で、条件付きアウトラインをスキップしてください: '$ _SESSION ['product_ids'] = array_merge($ _ SESSION ['product_ids'] ?? []、$ _POST ['ids']); ' – bishop

+0

ロット! idがすでにセッション配列に存在するかどうかを確認することもできますか? –

+1

@Frank 'array_unique(array_merge($ _ SESSION ['product_ids']、$ _POST ['ids ']))' ... – deceze

関連する問題