Как преобразовать строку определенного типа в массив с ключами в php? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть строка этого типа:

string(11) "2=OK, 3=OK" 

из текстового файла.Но я хотел бы преобразовать его в массив ключей такого типа:

array (
 [2] => Ok
 [3] => Ok 
)

Мне было интересно, как мы можем сделать это в PHP.

Примечание: - Я обычно использую explode()и str_split() для строки преобразования в массив, но в этом случае я не знаю, как это сделать.

Ответы [ 4 ]

1 голос
/ 08 мая 2019

использовать взорваться () , foreach () вместе с trim ()

<?php

$string = "2=OK, 3=OK" ;

$array = explode(',',$string);

$finalArray = array();
foreach($array as $arr){
    $explodedString = explode('=',trim($arr));
    $finalArray[$explodedString[0]] = $explodedString[1];
}
print_r($finalArray);

https://3v4l.org/ZsNY8

0 голосов
/ 08 мая 2019

Вы можете использовать preg_match_all вместе с array_combine, str_word_count

$string = "2=OK, 3=OK" ;
preg_match_all('!\d+!', $string, $matches);
$res = array_combine($matches[0], str_word_count($string, 1));

выход

echo '<pre>';
print_r($res);

Array
(
 [2] => OK
 [3] => OK
)

LIVE DEMO

0 голосов
/ 08 мая 2019
  1. Разнесите строку символом ','.Вы получите массив, подобный ['2 = OK', '3 = OK']
  2. Используя foreach trim и разнесите каждый элемент по символу '='
0 голосов
/ 08 мая 2019

Вы можете использовать код чтения файла по умолчанию и пройти его, чтобы достичь того, что вы хотите,

$temp = [];
if ($fh = fopen('demo.txt', 'r')) {
    while (!feof($fh)) {
        $temp[] = fgets($fh);
    }
    fclose($fh);
}
array_walk($temp, function($item) use(&$r){ // & to change in address
    $r = array_map('trim',explode(',', $item)); // `,` explode
    array_walk($r, function(&$item1){
        $item1 = explode("=",$item1); // `=` explode

    });
});
$r = array_column($r,1,0);
print_r($r); 

array_walk - применить предоставленную пользователем функцию к каждому члену массива
array_map - Применяет обратный вызов к элементам заданных массивов.
explode - Разделить строку на строку

Demo .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...