Сравнение номеров массивов php - PullRequest
0 голосов
/ 07 июня 2018

Допустим, у меня есть

$input = ['1, 2, 3, 4, 5']; 

, и мне нужно получить все числа в массиве, которые хранятся в виде строки.Можно ли использовать foreach() или что-нибудь еще для каждого числа в этой строке?Другими словами, чтобы извлечь числа из строки.Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Я изменил входной массив, потому что кавычки не имеют смысла в терминах вопроса, дайте мне знать, если это не так.

$input = [1, 2, 3, '4', 5];


foreach($input as $i){

    if(is_string($i)){//test if its a string
        $strings[]=$i; //put stings in array (you could do what you like here
    }

}
print_r($strings); 

output:

Array
(
    [0] => 4
)

yourinput - это отдельный элемент массива с одной строкой чисел, разделенных запятыми

$input = ['1, 2, 3, 4, 5'];
0 голосов
/ 07 июня 2018

Для данных вашего примера вы можете зациклить массив и проверить, является ли элемент массива строкой, используя is_string .В вашем примере числа разделены запятой, чтобы вы могли использовать explode и использовать запятую в качестве разделителя.

Тогда вы можете использовать is_numeric для проверки значенийот взрыва.

$input = ['1, 2, 3, 4, 5', 'test', 3, '100, a, test'];
foreach ($input as $item) {
    if (is_string($item)) {
        foreach (explode(',', $item) as $i) {
            if (is_numeric($i)) {
                echo trim($i) . "<br>";
            }
        }
    }
}

Демо

Это приведет к:

1
2
3
4
5
100
0 голосов
/ 07 июня 2018

Используйте explode(), чтобы разбить строку на числа.

foreach ($input as $numberstring) {
    $numbers = explode(', ', $numberstring);
    foreach ($numbers as $number) {
        ...
    }
}
...