2016-05-09 4 views
-2

私は次のコードを持っている: -ループ内で配列値を再割り当てするにはどうすればよいですか?

$returnArr = $this->master_model->fetch_all_data($data, $selectString,$limit, $offset); 
foreach($returnArr as $row) 
    { 
     if (array_key_exists($data.'_image', $row)) 
     { 
      $img = base_url()."uploads/$data/". $row[$data.'_image']; 
      $row[$data.'_image'] = $img; 
     } 
    } 
print_r($returnArr); 

$のリターンは、次の形式になります。さて、次のコード行では、私は[sticker_image]にを変更しています

Array ([0] => 
     Array ([sticker_image] => post_1462515402.jpg 
       [sticker_code] => :*) 
     [1] => Array ([sticker_image] => post_1462515510.jpg 
       [sticker_code] => ^=^) 
     [2] => Array ([sticker_image] => post_1462515532.jpg 
       [sticker_code] => >_<*) 
     [3] => Array ([sticker_image] => post_1462515539.jpg 
       [sticker_code] => :(()) 

リンク:

if (array_key_exists($data.'_image', $row)) 
{ 
    $img = base_url()."uploads/$data/". $row[$data.'_image']; 
    $row[$data.'_image'] = $img; 
} 

ただし、変更は行われません。それはまだ来ています

[sticker_image] => post_1462515402.jpg 

私は間違って何をしていますか?

+1

が、それは 'array_key_exists($データ.'_画像」、$行)'内側に行くのではありませんてもよいです。他の変数の値を知らなければ、疑問がはっきりしません。 –

+1

@ダーン・エル...何ですか? :P –

答えて

1

$row[$data.'_image'] = $img;は、配列要素のローカルコピーのみを変更します。

あなたが参照してループしなければならない実際の配列要素を変更するには、次の

$returnArr = ['a' => 'b']; 

foreach ($returnArr as &$row) { 
    $row = 'cc'; 
} 

var_dump($returnArr); // ['a' => 'cc']; 
関連する問題