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

Тема в разделе "PHP", создана пользователем serjinio, 1 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    есть два массива:
    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';
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    странные записи.
    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);
     
  3. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    подправлю для 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);
     
  4. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Насчет $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 были бы в любом случае инициализированны
     
  5. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    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());
     
  6. Martyrer

    Martyrer Писатель

    Регистр.:
    15 апр 2009
    Сообщения:
    6
    Симпатии:
    0
    чтоб совсем хорошо, и без варнингов, лучше так...
    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());
     
  7. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    во второй массив подставляет значения из первого массива и 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;

    ?>
     
    agnitumus и serjinio нравится это.
  8. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Элегантное решение ,переменные инициализированы даже при пустом массиве и ни одного нотайса!
     
Статус темы:
Закрыта.