2017-02-05 4 views
0

Я уже исследовал это, но найденные ответы не помогли решить мою проблему. Я хочу изменить все элементы имени пользователя на «kk», но после этого печать массива показывает, что ничего не изменилось. Что может быть неправильным?PHP изменение значения элемента в многомерном массиве

<?php 
$myArray = Array(
    0 => Array(
     'sender' => kk, 
     'message' => hhiui, 
     'timestamp' => '2017-02-04 10:04:57', 
     'username' => '', 
     'msgtype' => 0, 
     'threadid' => 20737047302042017230457 
    ) , 
    1 => Array(
     'sender' => kk, 
     'message' => hhiui, 
     'timestamp' => '2017-02-04 10:04:57', 
     'username' => '', 
     'msgtype' => 0, 
     'threadid' => 20737047302042017230457 
    ) , 
    2 => Array(
     'sender' => kk, 
     'message' => hhiui, 
     'timestamp' => '2017-02-04 10:04:57', 
     'username' => '', 
     'msgtype' => '16', 
     'threadid' => 20737047302042017230457 
    ) 
); 

foreach($myArray as $value) 
    { 
    $value['username'] = "kk"; 
    } 

print_r($myArray); 

Она просто дает мне:

Array 
(
    [0] => Array 
     (
      [sender] => kk 
      [message] => hhiui 
      [timestamp] => 2017-02-04 10:04:57 
      [username] => 
      [msgtype] => 0 
      [threadid] => 2.0737047302042E+22 
     ) 

    [1] => Array 
     (
      [sender] => kk 
      [message] => hhiui 
      [timestamp] => 2017-02-04 10:04:57 
      [username] => 
      [msgtype] => 0 
      [threadid] => 2.0737047302042E+22 
     ) 

    [2] => Array 
     (
      [sender] => kk 
      [message] => hhiui 
      [timestamp] => 2017-02-04 10:04:57 
      [username] => 
      [msgtype] => 16 
      [threadid] => 2.0737047302042E+22 
     ) 

) 
Array 
(
    [2] => Array 
     (
      [sender] => kk 
      [message] => hhiui 
      [timestamp] => 2017-02-04 10:04:57 
      [username] => 
      [msgtype] => 16 
      [threadid] => 2.0737047302042E+22 
     ) 
+0

вы должны внести изменения в $ туАггау –

ответ

2

Вы должны сделать это таким образом:

foreach ($myArray as &$value) 
{ 
    $value['username'] = "kk"; 
} 

Обратите внимание на & символ. Это дает вам возможность изменять массив.

+0

Thaaat's это, спасибо !!!! –

1

Сделайте так:

foreach ($myArray as $key=>$value) 
{ 
$myArray[$key]['username'] = "kk"; 
} 
2

использовать reference operator & перед $value в цикле для редактирования Row массива

Ссылки в PHP является средством для доступа к одному переменному контенту по разным именам , http://php.net/manual/en/language.references.whatare.php

<?php 
    $myArray = Array(
     0 => Array(
      'sender' =>"kk", 
      'message' => "hhiui", 
      'timestamp' => '2017-02-04 10:04:57', 
      'username' => '', 
      'msgtype' => 0, 
      'threadid' => 20737047302042017230457 
     ) , 
     1 => Array(
      'sender' => "kk", 
      'message' => "hhiui", 
      'timestamp' => '2017-02-04 10:04:57', 
      'username' => '', 
      'msgtype' => 0, 
      'threadid' => 20737047302042017230457 
     ) , 
     2 => Array(
      'sender' => "kk", 
      'message' => "hhiui", 
      'timestamp' => '2017-02-04 10:04:57', 
      'username' => '', 
      'msgtype' => '16', 
      'threadid' => 20737047302042017230457 
     ) 
    ); 

    foreach($myArray as &$value) 
    { 
      $value['username'] = "kk"; 
    } 

    print_r($myArray); 
+0

Я поддерживаю решение @adwairi –

Смежные вопросы