2017-02-07 5 views
-1

У меня есть массив:PHP получить письмо идентификатор из массива

$arr = array(c,b,a); 

И еще один массив:

$string = array(a,a,b); 

Как сделать, чтобы это дало мне массив выглядит как там:

$arr2 = array(2,2,1); 

Извините за мой плохой английский.

+2

, что бы у пытался до сих пор –

+1

Что это - '3,3,2'? –

+3

Какова логика этого? – motanelu

ответ

2

Использование array_search() может решить эту проблему, но помните, array_search() вернется ЛОЖЬ, если он найти значение в массиве

$arr = array('c','b','a'); 
$string = array('a','a','b'); 
$new_arr = array(); 

foreach ($string as $value){ 
    $index = array_search($value, $arr); 
    if ($index !== false) { 
     $new_arr[] = $index; 
    } else { 
     $new_arr[] = -1; // used -1 to indicate a NO FIND 
    } 
} 

print_r($new_arr); 

Результат

Array 
(
    [0] => 2 
    [1] => 2 
    [2] => 1 
) 
1

Не могли бы вы можете использовать array_keys()

foreach($string as $key => $value){ 
    array_search($value, array_keys($arr)); 

} 
+0

PHP Ошибка анализа: синтаксическая ошибка, неожиданное ')', expecting '(' – Lowder

0

Попробуйте

<?php 
$arr = array('c','b','a','d'); 
$string = array('a','a','b'); 
$op=array(); 
foreach($string as $value) 
{ 
    $op[]=array_search($value, $arr); 
} 
print_r($op) 
?> 

output-

Array ([0] => 2 [1] => 2 [2] => 1)

+0

PHP Предупреждение: неверный аргумент, предоставленный foreach() – Lowder

0

Попробуйте это:

<?php 

$arr = array('c','b','a'); 

$string = array('a','a','b'); 

$res = []; 

foreach ($string as $arr_val){ 
    $res[] = ((int)array_search($arr_val, $arr))+1; 
} 

print_r($res); 
Смежные вопросы