php заменяет не совпадения из двух массивов - PullRequest
0 голосов
/ 02 октября 2011

Как заменить все несоответствия из одного массива, которые не определены в другом массиве, у меня вроде получилось, но это не совсем верно.как я покажу вам.

результат есть, но неверный.

- - £ 8 - - - - - - - -

Требуемый результат должен быть

 £ 8 - - 

, вот как мой код

$vals_to_keep = array(8, 'y', '£');

$replace_if_not_found = array('£', 8, '#', 't'); // replace if not in above array

$result = '';

foreach ($replace_if_not_found as $d) {
 foreach ($vals_to_keep as $ok) {
    if(strcmp($d, $ok) == 0){
    $result .= $d . " ";
    }else 
    $result .= str_replace($d, $ok ,'-') . " ";
    }
}
echo $result;

Ответы [ 2 ]

1 голос
/ 02 октября 2011

использовать in_array http://php.net/manual/en/function.in-array.php

foreach ($replace_if_not_found as $d) {
if (in_array($d, $vals_to_keep)) 
    $result .= $d . " ";
else 
    $result .= str_replace($d, $ok ,'-') . " ";
}
0 голосов
/ 02 октября 2011

Вы можете перебрать все элементы в $replace_if_not_found, заменив их на - или нет, в зависимости от ситуации.

Используя замыкание в PHP 5.3 или выше

$result = array_map(function($item) use ($vals_to_keep) {
    return in_array($item, $vals_to_keep, TRUE) ? $item : '-';
}, $replace_if_not_found);
echo implode(' ', $result);

Использование цикла foreach

$result = array();
foreach ($replace_if_not_found as $item) {
    if (in_array($item, $vals_to_keep, TRUE)) {
        $result[] = $item;
    } else {
        $result[] = '-';
    }
}
echo implode(' ', $result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...