2012-01-24 5 views
1

У меня есть массив $minusЗначения массива для проверки других значений массива в PHP?

array(3) { [0]=> string(6) "people" 
      [1]=> string(7) "friends" 
      [2]=> string(8) "siblings" 
     } 

И у меня есть массив $user

array(3) { ["people"]=> string(3) "100" 
      ["friends"]=> string(2) "10" 
      ["siblings"]=> string(2) "57" 
     } 

я могу получить значения $user, используя значения $minus как,

echo $user[$minus[0]] . ', ' . $user[$minus[1]] . ', ' . $user[$minus[2]]; 
// Would echo: 100, 10, 57 

Но как я могу получить значения $user, используя значения $minus в новый массив, новый массив должен быть как,

array(3) { [0]=> string(3) "100" 
      [1]=> string(2) "10" 
      [2]=> string(2) "57" 
     } 

Я попытался с помощью foreach петель, но никогда не может получить это право?

ответ

4
foreach($minus as $key=>$value) { 
    $new_array[$key] = $user[$value]; 
} 
+0

Попробуем это, спасибо за ваш ответ. –

+0

Работал блестяще, спасибо за это. Есть ли хорошие ссылки для документации по этому вопросу? –

+0

Документация PHP всегда блестящая - http://php.net/manual/en/control-structures.foreach.php. –

3

Использование array_map, PHP> = 5,3 только

$new_array = array_map(function($item) use ($user) {return $user[$item];}, $minus); 
+0

Это решение работает только в PHP> = 3.5 – afuzzyllama

+0

Он возвращает 'NULL' спасибо, хотя. –

+0

@ novactown.com Какова ваша версия PHP? –

0
$new_array = array($user[$minus[0]], $user[$minus[1]], $user[$minus[2]]); 
+0

Я не спускал вниз, но это не лучшее решение - оно работает только до тех пор, пока ключи имеют это имя, и есть ровно 3 члена массива. Если имена клавиш или размер массива изменится, это нужно будет изменить. –

1
$new_array= array(); 
foreach ($minus as $key => $value){ 
$new_array[$key] = $user[$value]; 
    } 
print_r($new_array); 
0
$minus = array(0 => "people", 
       1 => "friends", 
       2 => "siblings" 
      ); 

$user = array("people" => "100", 
       "friends" => "10", 
       "siblings" => "57" 
      ); 


$newArray = $minus; 
array_walk($newArray,function(&$item, $key, $prefix) { $item = $prefix[$item]; },$user); 

var_dump($newArray); 
Смежные вопросы