with two same relacionar keys array_unique array_merge_recursive array_combine array php array-merge

php - two - Fusionar matrices con las mismas claves



php join arrays with same keys (7)

En una pieza de software, fusiono dos matrices con la función array_merge . Pero necesito agregar la misma matriz (con las mismas claves, por supuesto) a una matriz existente.

El problema:

$A = array(''a'' => 1, ''b'' => 2, ''c'' => 3); $B = array(''c'' => 4, ''d''=> 5); array_merge($A, $B); // result [a] => 1 [b] => 2 [c] => 4 [d] => 5

Como ve, ''c'' => 3 se pierde.

Entonces, ¿cómo puedo fusionarlos todos con las mismas claves?


Acabo de escribir esta función, debería ser el truco para ti, pero sí lo hizo.

public function mergePerKey($array1,$array2) { $mergedArray = []; foreach ($array1 as $key => $value) { if(isset($array2[$key])) { $mergedArray[$value] = null; continue; } $mergedArray[$value] = $array2[$key]; } return $mergedArray; }


Dos entradas en una matriz no pueden compartir una clave, deberá cambiar la clave para el duplicado


Prueba con array_merge_recursive

$A = array(''a'' => 1, ''b'' => 2, ''c'' => 3); $B = array(''c'' => 4, ''d''=> 5); $c = array_merge_recursive($A,$B); echo "<pre>"; print_r($c); echo "</pre>";

regresará

Array ( [a] => 1 [b] => 2 [c] => Array ( [0] => 3 [1] => 4 ) [d] => 5 )


Prueba esto:

$array_one = $_POST[''ratio_type'']; $array_two = $_POST[''ratio_type'']; $array_three = $_POST[''ratio_type'']; $array_four = $_POST[''ratio_type'']; $array_five = $_POST[''ratio_type'']; $array_six = $_POST[''ratio_type'']; $array_seven = $_POST[''ratio_type'']; $array_eight = $_POST[''ratio_type'']; $all_array_elements = array_merge_recursive( $array_one, $array_two, $array_three, $aray_four, $array_five, $array_six, $array_seven, $array_eight ); print_r($all_array_elements, 1); foreach ($all_array_elements as $key => $value) { echo $key.''-''.$value; }



$A = array(''a'' => 1, ''b'' => 2, ''c'' => 3); $B = array(''c'' => 4, ''d''=> 5); $C = array_merge_recursive($A, $B); $aWhere = array(); foreach ($C as $k=>$v) { if (is_array($v)) { $aWhere[] = $k . '' in (''.implode('', '',$v).'')''; } else { $aWhere[] = $k . '' = '' . $v; } } $where = implode('' AND '', $aWhere); echo $where;


$arr1 = array( "0" => array("fid" => 1, "tid" => 1, "name" => "Melon"), "1" => array("fid" => 1, "tid" => 4, "name" => "Tansuozhe"), "2" => array("fid" => 1, "tid" => 6, "name" => "Chao"), "3" => array("fid" => 1, "tid" => 7, "name" => "Xi"), "4" => array("fid" => 2, "tid" => 9, "name" => "Xigua") );

si quieres convertir esta matriz de la siguiente manera:

$arr2 = array( "0" => array( "0" => array("fid" => 1, "tid" => 1, "name" => "Melon"), "1" => array("fid" => 1, "tid" => 4, "name" => "Tansuozhe"), "2" => array("fid" => 1, "tid" => 6, "name" => "Chao"), "3" => array("fid" => 1, "tid" => 7, "name" => "Xi") ), "1" => array( "0" =>array("fid" => 2, "tid" => 9, "name" => "Xigua") ) );

Entonces, mi respuesta será así:

$outer_array = array(); $unique_array = array(); foreach($arr1 as $key => $value) { $inner_array = array(); $fid_value = $value[''fid'']; if(!in_array($value[''fid''], $unique_array)) { array_push($unique_array, $fid_value); unset($value[''fid'']); array_push($inner_array, $value); $outer_array[$fid_value] = $inner_array; }else{ unset($value[''fid'']); array_push($outer_array[$fid_value], $value); } } var_dump(array_values($outer_array));

Espero que esta respuesta ayude a alguien en algún momento.