2013-11-14 2 views
0

Просто нужно немного помочь здесь. Потому что я создаю список массивов. И мне нужно заменить значение массива, используя условие. При проверке условия у меня нет ошибки. Но когда я заменяю массив, он не заменяется. Извините за мой плохой английский. Надеюсь, ты поймешь, о чем я. Вот мой код.Функция Array_replace() не отображает правильное замещенное значение

Вот мой ОСНОВА массив:

Array 
(
    [0] => Array 
     (
      [restaurant_id] => 1519 
      [new_lat] => 14.63809 
      [new_long] => 121.03242 
      [date_updated] => 2013-11-14 18:53:20 
     ) 

) 

Теперь я заменю этот массив в массиве

Array 
(
    [0] => Array 
     (
      [restaurant_id] => 1519 
      [new_lat] => 14.63796 
      [new_long] => 121.03278 
      [date_updated] => 2013-11-15 06:54:32 
     ) 

) 

Теперь я использовал array_replace();

Вот результат:

Array 
(
    [0] => Array 
     (
      [restaurant_id] => 1519 
      [new_lat] => 14.63809 
      [new_long] => 121.03242 
      [date_updated] => 2013-11-14 18:53:20 
     ) 

    [restaurant_id] => 1519 
    [new_lat] => 14.63796 
    [new_long] => 121.03278 
    [date_updated] => 2013-11-15 06:54:32 
) 

В моем коде для создания массива:

//THIS IS MY UPDATED ARRAY 
     $data_add = array( 
      'restaurant_id' => $restaurant_id, 
      'new_lat' => $new_lat_entry, 
      'new_long' => $new_long_entry, 
      'date_updated' => date('Y-m-d H:i:s') 
     ); 

     $data = unserialize(file_get_contents('addresses.txt')); //THIS IS THE BASE ARRAY 

//GET THE ID OF UPDATED ARRAY AND FIND IN THE BASE ARRAY - IF EXIST, UPDATE ONLY. IF NOT SIMPLY ADD 

     $target = $data_add['restaurant_id']; 

     for ($i = 0; $i < count($data); $i++) { 

      $get_id = $data[$i]['restaurant_id']; 

      if($get_id == $target){ 

       //if found update/delete specific row 
       echo "found"; 

       $add_data = array(); 
       $add_data = array(
        $i => $data_add 
       ); 

       $new_array = array(); 
       $new_array = array_replace($data,$data_add); 

      }else{ 

       //if not found add 
       echo "not found"; 
       $data[] = $data_add; 

      } 

     } 

Для отображения:

echo "<pre>"; 
      echo "BASE ARRAY<br />"; 
      print_r($data); 
      echo "---------------------------------------------------------<br />"; 

      echo "NEW ARRAY<br />"; 
      print_r($add_data); 
      echo "---------------------------------------------------------<br />"; 

      echo "REPLACED ARRAY<br />"; 
      print_r($new_array); 
      echo "---------------------------------------------------------<br />"; 

Любая идея, где мой код идет не так? Пожалуйста, помогите мне, ребята. Заранее спасибо. :)

ответ

0

Изменение этой линии -

$new_array = array_replace($data,$data_add); 

к этому -

$new_array = array_replace($data[0], $data_add); 

$ data_add не структурировано, как вы изображая его выше на выходе. У вас есть этот код, чтобы создать $ data_add -

$data_add = array( 
    'restaurant_id' => $restaurant_id, 
    'new_lat' => $new_lat_entry, 
    'new_long' => $new_long_entry, 
    'date_updated' => date('Y-m-d H:i:s') 
); 

Если вы на самом деле вывода, что массив, то он будет выглядеть следующим образом -

Array 
(
    [restaurant_id] => 1519 
    [new_lat] => 14.63796 
    [new_long] => 121.03278 
    [date_updated] => 2013-11-15 06:54:32 
) 

Итак, вам нужно заменить $ data_add в $ данных [0], так как вы хотите заменить нулевой индекс $ data.

+0

Сэр еще вопрос. Я исправил отображение нового массива. Но в моем текстовом файле он всегда добавляет новый файл. – Jerielle

+0

Я не уверен, что вы подразумеваете под «в моем текстовом файле он всегда добавляет новый файл». Возможно, вы можете открыть новый вопрос? –

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