Estoy tratando de agregar un prefijo de URL a un valor en una matriz:

Como ejemplo, la matriz $cars:

Matriz actual:

     array (size=3)
      0 => 
        array (size=3)
          'id' => string '1' (length=1)
          'image' => string '1.jpg' (length=5)
          'car' => string 'bmw' (length=12)
      1 => 
        array (size=3)
          'id' => string '2' (length=1)
          'image' => string '2.jpg' (length=5)
          'car' => string 'mercedes' (length=17)
      2 => 
        array (size=3)
          'id' => string '3' (length=1)
          'image' => string '3.jpg' (length=5)
          'car' => string 'bentley' (length=9)

Quiero agregar el prefijo en la clave de imagen.

El resultado debería ser así:

array (size=3)
  0 => 
    array (size=3)
      'id' => string '1' (length=1)
      'image' => string 'http://cars.com/1.jpg' (length=5)
      'car' => string 'bmw' (length=12)
  1 => 
    array (size=3)
      'id' => string '2' (length=1)
      'image' => string 'http://cars.com/2.jpg' (length=5)
      'car' => string 'mercedes' (length=17)
  2 => 
    array (size=3)
      'id' => string '3' (length=1)
      'image' => string 'http://cars.com/3.jpg' (length=5)
      'car' => string 'bentley' (length=9)
0
Julius 18 ene. 2018 a las 18:22

3 respuestas

La mejor respuesta

Solo bucle en la matriz. Sandbox con pruebas

Usando foreach:

foreach ($arr as $i => $a) {
   $arr[$i]['image'] = 'http://cars.com/' . $arr[$i]['image'];
}

Usando foreach con referencia:

foreach ($arr as &$a) {
   $a['image'] = 'http://cars.com/' . $a['image'];
}

Utilizando para:

for ($i = 0; $i < count($arr); $i++) {
   $arr[$i]['image'] = 'http://cars.com/' . $arr[$i]['image'];
}

Usando array_walk:

array_walk($arr3,  function(&$v) { 
    $v['image'] = 'http://cars.com/' . $v['image'];
});

Usando while:

$i = count($arr) - 1;
while ($i > 0) {
   $arr[$i]['image'] = 'http://cars.com/' . $arr[$i]['image'];
   $i--;
}
1
Claudio 18 ene. 2018 a las 15:47

Suponiendo que su matriz fuera llamada $ cars, ¿qué tal si ...

foreach ($cars AS $key => $car) {
  $cars[$key]['image'] = 'http://cars.com/' . $car['image'];
}
0
rangfu 18 ene. 2018 a las 15:55

Puede realizar un ciclo de la matriz con foreach (o for) o literalmente puede recorrer la matriz con la función array_walk y modificar cada elemento:

array_walk($cars, function(&$item) {
    $item['image'] = "http://cars.com/".$item['image'];
});
0
Vincenzo Petrucci 18 ene. 2018 a las 15:45
48324676