Как извлечь числовые значения из массива, а затем объединить его с другой строкой?

1

У меня есть массив $ qwe2, из которого мне нужно сделать 2 отдельных массива. Один, который будет содержать не числовые значения в этом примере, мама, сестра и массив с числовыми значениями 11dad 13brother.

$qwe = " mom   11dad  sister  13brother ";
$qwe0 = ucwords(strtolower($qwe));
$qwe1 = preg_replace('/\s+/', ' ',$qwe);
$qwe7 = trim($qwe1);
$qwe2 = explode(' ',$qwe7);

var_dump($qwe2);

Вот как это выглядит:

array (size=4)
  0 => string 'mom' (length=3)
  1 => string '11dad' (length=5)
  2 => string 'sister' (length=6)
  3 => string '13brother' (length=9)

Все эти вещи также необходимы, но мне удалось сделать это легко. Я не понимаю часть ниже.

Желаемый результат: $asd = array("mom, sister"); и $zxc = array("11dad, 13brother");

Также у меня есть строка $doyou = "Do you like?" который мне нужно объединить с новым массивом $asd который приведет к: Do you like mom?, Do you like sister?

Заранее спасибо!

  • 0
    что ты уже испробовал? Каковы правила выбора «мама» и «сестра», чтобы быть в первом массиве? а остальные значения должны быть во втором массиве?
  • 0
    Я пробовал array_slice и пытался получить доступ к каждому элементу массива по позиции, но это не сработало. Так что мне один массив мне нужны числовые значения (11dad, 13 брат), а во втором массиве не числовые (мама, сестра)
Показать ещё 1 комментарий
Теги:
arrays

1 ответ

4
Лучший ответ

Используйте PHP array_filter() с некоторыми пользовательскими функциями, которые проверяют номера в строке:

$asd = array_filter($qwe2, 'hasNumbers');
$zxc = array_filter($qwe2, 'hasNoNumbers');

function hasNumbers($string)
{
    return strcspn($string, '0123456789') != strlen($string);
}
function hasNoNumbers($string)
{
    return strcspn($string, '0123456789') == strlen($string);
}

Тогда array_map() может помочь вам заменить строку:

echo implode(', ', array_map('myStringReplace', $asd));

function myStringReplace($string)
{
    return str_replace('?', $string, 'Do you like ?');
}
  • 0
    Это работает. Мне нужно только понять, как взорвать $ doyou и $ asd. Благодарю.
  • 0
    @Kotidrmakavez Я только что добавил решение для этого. Извините, пропустил это в первый раз.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню