連想配列に同じ値を入れない

[php]
$total_arr = array();
$key_arr_count = count( $key_arr );
for ( $h = 0; $h < $key_arr_count; $h++ ) {

if ( ! array_key_exists( $key_arr[ $h ], $total_arr ) ) {

$total_arr[ $key_arr[ $h ] ][‘email’] = (array) $mail_arr[ $h ];

} else {

$total_arr[ $key_arr[ $h ] ][‘email’][] = $mail_arr[ $h ];

}

$total_arr[ $key_arr[ $h ]][‘post_id’] = $post_id_arr[ $h ];

}

$sort_flag = ksort( $total_arr );
[/php]

メールアドレスを選択したセルに紐付けるために、という配列を作った。
元の配列は、メールにセルデータが複数入っているんだけど、逆にセルにメールアドレスを紐付けた。要は入れ替えたかったんすよね。

期待通りに動いたなと思ってたら、1つのセルに同じメールアドレスが複数並んでしまった。。

[code]
array (size=3)
‘a-01’ =>
array (size=2)
‘email’ =>
array (size=2)
0 => string ‘test@testhage.com’ (length=16)
1 => string ‘test@testhage.com’ (length=16)
‘post_id’ => int 407
‘a-03’ =>
array (size=2)
‘email’ =>
array (size=3)
0 => string ‘test@testhage.com’ (length=16)
1 => string ‘test@testhage.com’ (length=16)
2 => string ‘test@testhage.com’ (length=16)
‘post_id’ => int 405
‘a-04’ =>
array (size=2)
‘email’ =>
array (size=3)
0 => string ‘test@testhage.com’ (length=16)
1 => string ‘test@testhage.com’ (length=16)
2 => string ‘test@testhage.com’ (length=16)
‘post_id’ => int 405
[/code]

…こんな感じ。。
重複ないように入れないとマズイんだけど、しばらくわからなかった…😅
できあがった、$total_arrをforeachで回してarray_uniqueでとかいろいろやったんだけど、イマイチしっくりこなかった。。

で、ようやくわかったのがコレ↓↓

[php]
$total_arr = array();
$key_arr_count = count( $key_arr );
for ( $h = 0; $h < $key_arr_count; $h++ ) {

if ( ! array_key_exists( $key_arr[ $h ], $total_arr ) ) {

$total_arr[ $key_arr[ $h ] ][‘email’] = (array) $mail_arr[ $h ];

} else {

if ( ! in_array( $mail_arr[ $h ], $total_arr[ $key_arr[ $h ] ][‘email’] ) ) {

$total_arr[ $key_arr[ $h ] ][‘email’][] = $mail_arr[ $h ];

}

}

$total_arr[ $key_arr[$h]][‘post_id’] = $post_id_arr[ $h ];

}
[/php]

配列作るときにやればいいじゃない!!ってのに気づくの遅いよ (*_*)
で、無事期待通りに出るようになった ↓↓

[code]
array (size=3)
‘a-01’ =>
array (size=2)
‘email’ =>
array (size=2)
0 => string ‘test@hagechirakasi.com’ (length=22)
1 => string ‘test@testhage.com’ (length=16)
‘post_id’ => int 407
‘a-03’ =>
array (size=2)
‘email’ =>
array (size=2)
0 => string ‘test@hagechirakasi.com’ (length=22)
1 => string ‘test@testhage.com’ (length=16)
‘post_id’ => int 405
‘a-04’ =>
array (size=2)
‘email’ =>
array (size=2)
0 => string ‘test@hagechirakasi.com’ (length=22)
1 => string ‘test@testhage.com’ (length=16)
‘post_id’ => int 405
[/code]

めでたし、めでたし 😀

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です