(закрыто) Преобразовать список строк в массив Json - PullRequest
0 голосов
/ 22 октября 2019

У меня есть строковый формат:

"Разработка Android: 1, Студия Android: 1, Котлин: 1, Java: 1, Представление модели (MVP): 0,"

Мне нужно преобразовать его в формат JSON, который выглядит следующим образом:

[{'id': 1, 'name': "Android Development"}, {'id': 2, 'name': "Android Studio"},{'id': 3, 'name': "Kotlin"}, {'id': 4, 'name': "Java"}, {'id': 5, 'name': "Model-View-Presenter (MVP)"}]

Ответы [ 4 ]

1 голос
/ 22 октября 2019

Вы можете попробовать код:

$str = "Android Development : 1, Android Studio : 1, Kotlin : 1, Java : 1, Model-View-Presenter (MVP) : 0,";
$arr1 = explode(",",$str);
$result = array();

foreach ($arr1 as $value) {
    $arr2 = explode(":",$value);
    if(count($arr2)>0)
    {
        $result[] = $arr2[0];
    }
}
var_dump($result);
0 голосов
/ 22 октября 2019

попробуйте это:

$string="Android Development : 1, Android Studio : 1, Kotlin : 1, Java : 1, Model-View-Presenter (MVP) : 0, ";
    $arr= preg_split( '/(,|:)/', $string);
    $output=[];
    for($i=0;$i<count($arr)-1;$i+=2)
        $output[]=[
        'name'=>$arr[$i],
        'id'=>(int)$arr[$i+1],
        ];

        echo json_encode($output);
0 голосов
/ 22 октября 2019

Вы можете попробовать что-то вроде этого:

$string = "Android Development : 1, Android Studio : 1, Kotlin : 1, Java : 1, Model-View-Presenter (MVP) : 0, ";

$array1 = explode(',', $string);
$result = [];
foreach ($array1 as $key => $value) {
     $value = trim($value);
     if (!empty($value)) {
          $array2 = explode(':', $value);
          $result[$key]['id'] = $key;
          $result[$key]['name'] = $array2[0];
      }
 }

echo json_encode($result);
0 голосов
/ 22 октября 2019

Разделите строку с помощью ,, затем сохраните содержимое до : в качестве имени.

$result = [];
$string = "Android Development : 1, Android Studio : 1, Kotlin : 1, Java : 1, Model-View-Presenter (MVP) : 0, ";
$array = explode(',',$string);
$id = 1;
foreach($array as $str){
    if($pos = strpos($str,":")){
        $result[] = array(
            'id' => $id++,
            'name' => trim(substr($str,0,$pos))
        );
    }
}
print_r(json_encode($result));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...