2016-05-17 3 views
0
Array 
(
    [0] => Array 
     (
      [hotel_id] => 79 
      [logo] => 1463466926-97157549.jpg 
     ) 

    [1] => Array 
     (
      [hotel_id] => 78 
      [logo] => 1463466942-15603675.jpg 
     ) 

    [2] => Array 
     (
      [hotel_id] => 77 
      [logo] => 1463466953-25200244.jpg 
     ) 

    [3] => Array 
     (
      [hotel_id] => 76 
      [logo] => 1463466967-62926110.jpg 
     ) 

    [4] => Array 
     (
      [hotel_id] => 75 
      [logo] => 
     ) 

    [5] => Array 
     (
      [hotel_id] => 74 
      [logo] => 
     ) 

) 

Его значения массива.Как заменить значение вложенного массива в php

Здесь я посылаю некоторые значения, такие как hotel_id & logo этого отеля ..

Но мне нужно отправить логотип в качестве URL изображения

т.е., для этого: 1463466926-97157549.jpg Мне нужно отправить в http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466926-97157549.jpg

добавляя путь этот образ ..

И, наконец, мой массив должен быть таким.

Array 
(
    [0] => Array 
     (
      [hotel_id] => 79 
      [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466926-97157549.jpg 
     ) 

    [1] => Array 
     (
      [hotel_id] => 78 
      [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466942-15603675.jpg 
     ) 

    [2] => Array 
     (
      [hotel_id] => 77 
      [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466953-25200244.jpg 
     ) 

    [3] => Array 
     (
      [hotel_id] => 76 
      [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466967-62926110.jpg 
     ) 

    [4] => Array 
     (
      [hotel_id] => 75 
      [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg 
     ) 

    [5] => Array 
     (
      [hotel_id] => 74 
      [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg 
     ) 

) 

Здесь последние две гостиницы имеют нулевые изображения.

Для этого я отправить URL изображения по умолчанию на такие, как http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg

как это ..

Кто-то может помочь мне, пожалуйста ..

Заранее спасибо ...

Я пробовал вот так

$im =array(); 
foreach ($Roo as $key => $value) 
{ 
    $im[]=(\URL::to('').'/'.$value['logo']); 
} 

Здесь \URL::to('').'/' мой путь И $Roo мой массив

Но, вместо этого получить только logo в отдельном массиве.

+0

Что вы пробовали до сих пор? – Hassaan

+0

Очень неясный и нечеткий ... Я бы предложил изменить ваш вопрос: каковы вызовы (входы), которые вы ожидаете? Каковы результаты? Не могли бы вы предоставить рабочее дело? Не могли бы вы дать несколько попыток? – DonCallisto

+0

, используя foreach loop, пересекайте весь массив и замените свой логотип на новый, если 'hotel_id' соответствует. –

ответ

4

цикл через массив и обновить массив следующим образом:

foreach ($array as $key => &$value) { 
    if ($value['logo'] != '') { 
     $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$value['logo']; 
    } else { 
     $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg'; 
    } 
} 
print_r($array); 
+0

Простой и легкий :) .. Но я не знаю, почему вы использовали '&' перед '$ value', добавив, что и только результаты пришли –

+0

& используется в качестве ссылки. Посмотрите, какие ссылки находятся в http://php.net/manual/en/language.references.php –

+0

Hoo fine..Thank you :) –

1
foreach($hotel_details as $key => $detail) { 

    if(!empty($detail['logo']) { 

     $detail['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$detail['logo'] 
     $hotel_destails[$key] = $detail 

    } else { 

     $detail['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg' 
     $hotel_destails[$key] = $detail 

    } 
} 
1

Произнесите имя массива $arr, поэтому начните пересекающий весь массив и заменить свой логотип с новым, если hotel_id спичка.

Используя значение &, вы имеете в виду, что массив является ссылкой, поэтому то, что вы меняете здесь, должно обновляться в основном массиве, это необязательно.

$path = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'; 
$hotel_id = 79; 

foreach($arr as $key => &$value){ 
    if($value['hotel_id'] == $hotel_id){ 
     $value['logo'] = $path.$value['logo']; 
     break; 
    } 
} 

print_r($arr); 

Примечание: Если вы хотите, чтобы изменить весь массив, то это будет очень легко, просто удалить, если состояние.

+0

Спасибо Frayne Konok, Почему вы назначили значения для 'hotel_id'. В моем массиве hotel_id может случайно изменяться в соответствии с моими результатами. –

+0

Почему вы используете эту строку _Here я отправляю некоторые ценности, такие как hotel_id & логотип этого отеля .._ ??? –

0

Там вы должны проверить о array_map() function.

С помощью этого входа массива:

Array 
(
    [0] => Array 
     (
      [hotel_id] => 0 
      [logo] => image_0.jpg 
     ) 

    [1] => Array 
     (
      [hotel_id] => 1 
      [logo] => image_1.jpg 
     ) 

    [2] => Array 
     (
      [hotel_id] => 2 
      [logo] => image_2.jpg 
     ) 

    [3] => Array 
     (
      [hotel_id] => 3 
      [logo] => 
     ) 

    [4] => Array 
     (
      [hotel_id] => 4 
      [logo] => image_4.jpg 
     ) 

) 

Вы можете получить этот выходной массив:

Array 
(
    [0] => Array 
     (
      [hotel_id] => 0 
      [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_0.jpg 
     ) 

    [1] => Array 
     (
      [hotel_id] => 1 
      [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_1.jpg 
     ) 

    [2] => Array 
     (
      [hotel_id] => 2 
      [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_2.jpg 
     ) 

    [3] => Array 
     (
      [hotel_id] => 3 
      [logo] => http://some_addr.tld/some_dir/some_sub_dir/300x300.jpg 
     ) 

    [4] => Array 
     (
      [hotel_id] => 4 
      [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_4.jpg 
     ) 

) 

Просто делать это:

$base = 'http://some_addr.tld/some_dir/some_sub_dir/'; 

$default = '300x300.jpg'; 

$res = array_map(
    function($x) use ($base, $default) 
    { 
     if (array_key_exists('logo', $x)) 
     { 
      if (!empty($x['logo'])) 
      { 
       $x['logo'] = $base . $x['logo']; 
      } 
      else 
      { 
       $x['logo'] = $base . $default; 
      } 
     } 

     return $x; 
    } 
    , $arr); 

Где $arr - это массив, содержащий ваши отели, а $res будет измененным массивом.

0

вы можете сделать этого добиться с помощью следующего кода:

$url = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'; 
foreach ($arr as &$value) { 
    if ($value['logo'] != '') { 
     $value['logo'] = $url.$value['logo']; 
    } else { 
     $value['logo'] = $url; 
    } 
}