2016-05-26 13 views
1

i an einem Punkt fest am Ich habe zwei Arrays eine Lesedaten und Antheren enthält enthält schreiben, wie untenWie zwei Arrays in PHP fusionieren

Lese Array

Array 
(
    [0] => master/city 
    [1] => master/national_holiday 
    [2] => master/operator_comments 
    [3] => master/sensors 
) 

Schreib Array

Array 
(
    [0] => master/city 
    [1] => master/national_holiday 
) 
gezeigten

Ich möchte diese beiden Arrays kombinieren. Und ich will als unten

Array 
(
    ['master/city'] => 'read/write' 
    ['master/national_holiday'] => 'read/write' 
    ['master/operator_comments'] => 'read' 
    ['master/sensors'] => 'read' 
) 

ist es möglich so?

+3

Es gibt so viele auf dieser Seite tun! Sie sollten zuerst finden und versuchen ... :) –

+0

Ich habe array_flip() verwenden und versuchen, in Wert anhängen, aber es gibt kein erwartetes Ergebnis! Ich bin verwirrt was zu benutzen ?? –

+0

@David Sie refrence Site haben, stellen Sie mir bitte ... :( –

Antwort

1
// we need somed 
    $read = array('master/city', 
      'master/national_holiday', 
      'master/operator_comments', 
      'master/sensors'); 
    // Write variable 
$write = array('master/city','master/national_holiday'); 

$newarray = array(); 
foreach($read as $key => $value) 
{ 
// check value in another array 
if(in_array($value,$write)) 
    { 
    $access = 'read/write'; 
    } 
else 
    { 
    $access = 'read'; 
    } 

$newarray[$value] = $access; 
} 

print_r($newarray); 
2

Sie können dies tun:

Hier DEMO

$final = []; 
array_walk($read,function($v,$k) use (&$final,&$write){ 
    if(array_search($v,$write) > -1){ 
     $final[$v] = 'read/write'; 
    } 
    else{ 
     $final[$v] = 'read'; 
    } 
}); 
print_r($final); 

Ausgabe

Array 
(
    [master/city] => read/write 
    [master/national_holiday] => read/write 
    [master/operator_comments] => read 
    [master/sensors] => read 
) 
ist

EDIT Bitte diese in unterschiedlichen Array-Eingang für besseres Ergebnis überprüfen gemäß der Diskussion mit Dhanashri:

$read_flipped = array_flip($read); 
$read_new = array_fill_keys(array_keys($read_flipped), 'read');    

$write_flipped = array_flip($write); 
$write_new = array_fill_keys(array_keys($write_flipped), 'write'); 



$final = []; 
$arr3 = array_merge_recursive($read_new,$write_new); 

array_walk($arr3,function($v,$k) use (&$final) { 
    if(is_array($v)){ 
     $final[$k] = 'read/write'; 
    } 
    else{ 
     $final[$k] = $v; 
    } 
}); 
print_r($final); 
+0

Vielen Dank @Ali, Wirklich Vielen Dank .... :) :) –

+0

fühlt sich gut an, indem Sie helfen .... – Ali

+0

können Sie diese https://3v4l.org/tNY49 chech –

1
$read = array 
(
    "master/city", 
    "master/national_holiday", 
    "master/operator_comments", 
    "master/sensors", 
); 

$write = array(
    "master/city", 
    "master/national_holiday", 
); 


$new_array = array_merge($read,$write); 
$your_array = array(); 
foreach($new_array as $key => $value){ 
     $your_array[$value] = (array_key_exists($value,$your_array)) ? "read/write" : "read"; 
} 
var_dump($your_array); 

O/p

array (size=4) 
    'master/city' => string 'read/write' (length=10) 
    'master/national_holiday' => string 'read/write' (length=10) 
    'master/operator_comments' => string 'read' (length=4) 
    'master/sensors' => string 'read' (length=4) 

Sie auch elbe Mit

$new_array = array_merge($read,$write); 
$new_array2 = $new_array; 
array_filter($new_array,function($value){ 
    global $new_array; 
    $new_array[$value] = (array_key_exists($value,$new_array))? "read/write" : "read"; 
}); 
var_dump(array_diff($new_array, array_merge($new_array2))); 
+0

sehr cool ans @shivani danke ... :) –

+0

danke @dhanashri –

+0

aber @shivani, wenn ich nur schreibe Array übergeben dann Ausgabe zeigen lesen im Grunde Ausgang zeigen schreiben nicht lesen –