/ / Как да сложим разделен със запетая низ в две различни масиви? - PHP, масиви, низ, експлодира

Как да поставите нишката разделена със запетая в две различни масиви? - php, масиви, низ, експлозия

Искам да сложа низ (разделен със запетая) в 2 различни масива.

$str = 1,First,2,Second,3,Third,4,Forth,5,Fifth

Моята цел е да групирам числата и текста.

$number = {1,2,3,4,5)
$text = {first, second, third, forth, fifth}

Опитах се да го използвам explode(), но аз съм само за да създам един масив.

Отговори:

4 за отговор № 1

Това трябва да работи за вас:

първи explode() низ със запетая. Тогава можете array_filter() числата. И накрая можете просто да вземете array_diff() от $arr и $numbers масив.

<?php

$str = "1,First,2,Second,3,Third,4,Forth,5,Fifth";
$arr = explode(",", $str);

$numbers = array_filter($arr, "intval");
$text = array_diff($arr, $numbers);

?>

3 за отговор № 2

Можеш да използваш explode() и array_map() над резултатите:

$str = "1,First,2,Second,3,Third,4,Forth,5,Fifth";

array_map(function($item) use (&$numbers, &$strings) {
if(is_numeric($item)) {
$numbers []= $item;
} else {
$strings []= $item;
}
}, explode(",", $str));

var_dump($numbers, $strings);

3 за отговор № 3
<?php

$str = array(1,"First",2,"Second",3,"Third",4,"Forth",5,"Fifth");

$letters =array();
$no = array();

for($i=0;$i<count($str);$i++){
if($i%2 ==0){
$letters[] = $str[$i];

}else{
$no[] = $str[$i];
}
}
print_r($no);
print_r($letters);
?>

2 за отговор № 4

Това може да ви помогне

$str = "1,First,2,Second,3,Third,4,Forth,5,Fifth";

$array = explode(",",$str);

$number = array();
$string = array();


foreach($array as $val)
{
if(is_numeric($val))
{
$number[] = $val;
}
elseif(!is_numeric($val))
{
$string[] = $val;
}
}

echo $commNum = implode(",",$number); // These are strings
echo "<br/>".$commStr = implode(",",$string); // These are strings

echo "<pre>";
print_r($number);  // These are arrays

echo "<pre>";
print_r($string);  // These are arrays

2 за отговор № 5

Това трябва да работи за вас.

$str = "1,First,2,Second,3,Third,4,Forth,5,Fifth";
$result = explode(",",$str);
$number = array();
$text = array();
foreach(explode(",",$str) as $key => $value){
if($key % 2 == 1){
$text[] = $value;
}elseif($key % 2 == 0){
$number[] = $value;
}
}
print_r($number);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
print_r($text);//Array ( [0] => First [1] => Second [2] => Third [3] => Forth [4] => Fifth )

и ако вашият масив не е последователен по този начин, тогава някои от горните отговори са много подходящи за вас, като за

Актуализирам отговора си за кореспондентските ви коментари за Адриан

foreach(explode(",",$str) as $key => $value){
if(is_numeric($value)){
$number[] = $value;
}else{
$text[] = $value;
}
}

1 за отговор № 6

Можеш да използваш explode, но трябва да приложите някакъв филтър в този случай is_numeric:

<?php

$str = "1,First,2,Second,3,Third,4,Forth,5,Fifth, erewwrw , 6 ";

$array = explode(",", $str);

$array_numbers = array();
$array_letters = array();

for($i = 0; $i < count($array); $i++) {
if(is_numeric(trim($array[$i]))) {
$array_numbers[] = trim($array[$i]);
} else {
$array_letters[] = trim($array[$i]);
}
}
print_r($array_numbers);
print_r($array_letters);

?>

изход:

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Array
(
[0] => First
[1] => Second
[2] => Third
[3] => Forth
[4] => Fifth
)

1 за отговор № 7

Ако приемем, че низът ви съдържа номер, последван от низ и така нататък,

следното трябва да бъде решението.

Създайте два празни масива: $numbers и $strings.

Просто прекарайте цикъла над масива и вземете четни и нечетни елементи.

Дори елементите трябва да отидат в масив с числа и нечетните елементи трябва да отидат в низовия масив.

$str = "1,First,2,Second,3,Third,4,Forth,5,Fifth";
$numbers = array();
$strings = array();
$temp = explode(",", $str);
$i=0;
foreach ($temp as $e) {
if ($i%2) {
$strings[] = $e;
}
else {
$numbers[] = $e;
}
++$i;
}

echo "<pre>";
print_r($numbers);
echo "</pre>";

echo "<pre>";
print_r($strings);
echo "</pre>";