dポイントプレゼントキャンペーン実施中!

最大3つの要素が入る配列があります。
この配列の一部の要素が空の時に、それを特定の文字に置き換える方法を探しています。

具体的には、以下の様に空要素を「0」に置き換えたいです。
$array = ['']; → $array = ['0'];
$array = ['','1']; → $array = ['0','1'];
$array = ['2','','3']; → $array = ['2','0','3'];
$array = ['','4','']; → $array = ['0','4','0'];

要素には1〜4がランダムの位置に入ります。

色々と検索しましたが、上手く実現させる方法を見つけられませんでした。
ご教示頂ければ幸いです。

A 回答 (2件)

# 愚直に繰り返し


foreach ($array as $i => $v) {
if ($v === '') $array[$i] = '0';
}

# リファレンスを活用した繰り返し
foreach ($array as &$v) {
if ($v === '') $v = '0';
}

配列をフィルターにかける
$array = array_map(function($v){return $v==='' ? '0' : $v;}, $array);
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
様々な方法を知れたので、ベストアンサーとさせて頂きます。

お礼日時:2017/06/19 21:54

array_walkとリファレンスをつかえばよいでしょう



<?PHP
$a=[
[''],
['','1'],
['2','','3'],
['','4',''],
];
array_walk($a,function(&$x){
array_walk($x,function(&$y){
if($y==='') $y='0';
});
});
print_r($a);
?>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
array_walkの使い方が勉強になりました。

お礼日時:2017/06/19 21:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!