El orden no esta dado por la clave sino por la secuencia de inserción, por ejemplo:
Código PHP:
Ver original<?php
$a = [11 => "Ele 11", 5 => "Ele 5", 0 => "Ele 0", 22 => "Ele 22"];
El orden es 11, 5, 0, 22. Si bien el indice es numérico, el orden es el de inserción prevalece sobre el de las claves.
Por lo tanto lo que necesitas en construir un nuevo array en base a los dos que tienes:
Código PHP:
Ver original<?php
$a = array("fruta", "verdura", "nombres"); $b = array("lechuga","apio","zapallo"); $clave = "verdura";
$keys[$pos] = $clave;
$vals[$pos] = $b;
Cita: array (size=3)
0 => string 'fruta' (length=5)
'verdura' =>
array (size=3)
0 => string 'lechuga' (length=7)
1 => string 'apio' (length=4)
2 => string 'zapallo' (length=7)
2 => string 'nombres' (length=7)
Ahora bien, esto se podria mejorar, sino cada vez que tengas un array tendrias que definir un moton de variables, seria mejor algo asi:
Código PHP:
Ver original$a = ["fruta", "verdura", "nombres"];
$b = [
"verdura" => ["lechuga", "apio", "zapallo"],
"nombres" => ["jose", "gaston", "matias"]
];
foreach($b as $clave => $val)
{
$keys[$pos] = $clave;
$vals[$pos] = $val;
}
Cita: array (size=3)
0 => string 'fruta' (length=5)
'verdura' =>
array (size=3)
0 => string 'lechuga' (length=7)
1 => string 'apio' (length=4)
2 => string 'zapallo' (length=7)
'nombres' =>
array (size=3)
0 => string 'jose' (length=4)
1 => string 'gaston' (length=6)
2 => string 'matias' (length=6)
Lo cual ya esta bastante mejor, pero ¿Que pasaria si la clave no existe? Se reemplazaria el primer elemento, eso no esta bien, asi que hay que validar:
Código PHP:
Ver original$a = ["fruta", "verdura", "nombres"];
$b = [
"verdura" => ["lechuga", "apio", "zapallo"],
"nombres" => ["jose", "gaston", "matias"],
"provincias" => ["buenos aires", "neuquen", "cordoba"]
];
foreach($b as $clave => $val)
{
{
$keys[$pos] = $clave;
$vals[$pos] = $val;
}
}
Cita: array (size=3)
0 => string 'fruta' (length=5)
'verdura' =>
array (size=3)
0 => string 'lechuga' (length=7)
1 => string 'apio' (length=4)
2 => string 'zapallo' (length=7)
'nombres' =>
array (size=3)
0 => string 'jose' (length=4)
1 => string 'gaston' (length=6)
2 => string 'matias' (length=6)
Ok ya casi estamos, esto convendria tenerlo en una funcion, asi que:
Código PHP:
Ver originalfunction array_value_key_replace($array, $values)
{
foreach($values as $key => $val)
{
{
$keys[$pos] = $key;
$vals[$pos] = $val;
}
}
return $array;
}
$a = ["fruta", "verdura", "nombres"];
$b = [
"verdura" => ["lechuga", "apio", "zapallo"],
"nombres" => ["jose", "gaston", "matias"]
];
var_dump(array_value_key_replace
($a, $b));
Pero de esta forma no es del todo funcional, podria mejorarse pasando el primer parametro como referencia:
Código PHP:
Ver original<?php
function array_value_key_replace(&$array, $values)
Ahora si, podria estar aceptable