Соединить массивы

Статус
В этой теме нельзя размещать новые ответы.

serjinio

Гуру форума
Регистрация
10 Май 2007
Сообщения
439
Реакции
50
есть два массива:
PHP:
Array
(
    [ss] => aaaX
    [cc7] => CXZ
    [r] => zzzzz
)
$arr=array($a =>'ss',$b =>'cc7',$c =>'nom',$d =>'r');
получить :
PHP:
$a='aaaX';
$b='CXZ';
$c='';
$d='zzzzz';
 
странные записи.
PHP:
//допустим есть такое:
$arr1=array('ss'=>'aaaX','cc7'=>'CXZ','r'=>'zzzzz');
$arr2=array('a'=>'ss','b'=>'cc7','c'=>'nom','d'=>'r');
//тогда:
foreach($arr2 as $key => $value){
$arr2[$key]=$arr1[$value];
}
print_r($arr2);
 
странные записи.

подправлю для nom в условии

PHP:
//допустим есть такое:
$arr1=array('ss'=>'aaaX','cc7'=>'CXZ','r'=>'zzzzz');
$arr2=array('a'=>'ss','b'=>'cc7','c'=>'nom','d'=>'r');
//тогда:
foreach($arr2 as $key => $value){
if( ($key=='c') and ($value=='nom') ) // ненужное убрать
{$arr2[$key]=''; continue; }
$arr2[$key]=$arr1[$value];
}
print_r($arr2);
 
Насчет $arr=array($a =>'ss',$b =>'cc7',$c =>'nom',$d =>'r');
машинально написал глупость. конечно:
$arr1=array('ss'=>'aaaX','cc7'=>'CXZ','r'=>'zzzzz');
но этот вариант не подходит, мне надо получить не массив, а переменным присвоить именно значения с первого массива
$a='aaaX';
$b='CXZ';
$c='';
$d='zzzzz';
притом при отсутствии какого нибудь значения в массиве $arr1 переменной присваивалось либо пустое значение '' или NULL те переменные $a ,$b,$c,$d были бы в любом случае инициализированны
 
PHP:
$arr1=array('ss'=>'aaaX','cc7'=>'CXZ','r'=>'zzzzz' );
$arr2=array('a'=>'ss','b'=>'cc7','c'=>'nom','d'=>'r');
foreach($arr2 as $key => $value){
$$key=$arr1[$value];
}
print_r(get_defined_vars());
 
PHP:
$arr1=array('ss'=>'aaaX','cc7'=>'CXZ','r'=>'zzzzz' );
$arr2=array('a'=>'ss','b'=>'cc7','c'=>'nom','d'=>'r');
foreach($arr2 as $key => $value){
$$key=$arr1[$value];
}
print_r(get_defined_vars());

чтоб совсем хорошо, и без варнингов, лучше так...
PHP:
$arr1=array('ss' => 'aaaX', 'cc7' => 'CXZ', 'r' => 'zzzzz' );
$arr2=array('a' => 'ss', 'b' => 'cc7', 'c' => 'nom', 'd' => 'r');
$defValue = 'Дефолтовое значение';
foreach($arr2 as $key => $value){
   if($arr1[$value]) {
      $$key = $arr1[$value];
   }else{
      $$key = $defValue;
   }
}
print_r(get_defined_vars());
 
во второй массив подставляет значения из первого массива и extract сделает переменные из массива.
PHP:
<?

$array_1 = array('ss'=>'aaaX', 'cc7'=>'CXZ', 'r'=>'zzzzz');
$array_2 = array('a' =>'ss','b' =>'cc7','c' =>'nom','d' =>'r');

foreach($array_2 as $key => $value){ 
    $array_2[$key] = array_key_exists($value, $array_1) ? $array_1[$value] : '';
}

print_r($array_2);
extract($array_2);
print $a.$b.$c.$d;

?>
 
Элегантное решение ,переменные инициализированы даже при пустом массиве и ни одного нотайса!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху