Intereting Posts
получение предупреждения «Заголовок может содержать не более одного заголовка, обнаружена новая строка» выполнить две команды оболочки в одном выражении exec php Zend Form – динамические добавления подформ PHP: эквивалент функции MySQL SUBSTRING_INDEX? Используя PHPUnit с Selenium, как я могу проверить, что элемент содержит что-то? MySQL – переименовать столбец Загрузка файлов с сервера php Способы создания уникального отпечатка пальца пользователя в PHP Ratchet PHP WAMP – React / ZeroMQ – Конкретная передача пользователей Таблица php: отображает 3 ячейки в каждой строке Почему Google индексирует дружественный URL-адрес, смешанный с дефисами и% 20? как вычесть две даты и время, чтобы получить разницу незаконный код ошибки команды 127 в функции php exec Как я могу получить все перестановки в PHP без последовательных дубликатов? PHP-код для исключения index.php с помощью glob

Передача списка Python в php

Я очень новичок в php, и я довольно неплохо разбираюсь в том, как передавать аргументы с Python на php и наоборот. Теперь я знаю, как передавать одиночные переменные, но я все еще застрял и не могу найти ответ на этот вопрос:

Php вызывает сценарий Python (эта часть работает), которая возвращает список строк. Я хотел бы обработать этот список в php.

Когда я пытаюсь:

print mylist 

в myscript.py, а затем:

 $result = exec('python myscript.py') 

похоже, что php понимает $ result как одну строку (что я согласен с пониманием).

Я понимаю, что, может быть, json может помочь или что мне как-то нужно использовать словарь вместо списка в python. Однако я не могу понять, как именно.

Если кто-то может помочь, он будет очень признателен! Благодаря!

Например:

myscript.py

 import json D = {'foo':1, 'baz': 2} print json.dumps(D) 

myscript.php

 <?php $result = json_decode(exec('python myscript.py'), true); echo $result['foo']; 

Вы используете stdin / stdout для передачи данных между программами, это означает, что вам придется каким-то образом закодировать структуру, чтобы ваша принимающая программа проанализировала элементы.

Простейшим было бы иметь вывод python как список, разделенный запятыми

Адам, Барри, Каин

и использовать

 $result = explode(exec('python myscript.py')); 

на стороне php, чтобы вернуть данные строки в массив.

Если данные непредсказуемы (могут содержать запятые) или более структурированы (больше, чем просто простой список), тогда вы должны пойти на что-то вроде json, как предложил Krab.

Видимо, ваш вопрос вводил в заблуждение. Был перенаправлен здесь, думая, что это решение для преобразования списков python в php-массив.

Публикация наивного решения для тех, кто хочет конвертировать списки в php-массив.

 // Sample python list $data = '[["1","2","3","4"],["11","12","13","14"],["21","22","23","24"]]'; // Removing the outer list brackets $data = substr($data,1,-1); $myArr = array(); // Will get a 3 dimensional array, one dimension for each list $myArr =explode('],', $data); // Removing last list bracket for the last dimension if(count($myArr)>1) $myArr[count($myArr)-1] = substr($myArr[count($myArr)-1],0,-1); // Removing first last bracket for each dimenion and breaking it down further foreach ($myArr as $key => $value) { $value = substr($value,1); $myArr[$key] = array(); $myArr[$key] = explode(',',$value); } //Output Array ( [0] => Array ( [0] => "1" [1] => "2" [2] => "3" [3] => "4" ) [1] => Array ( [0] => "11" [1] => "12" [2] => "13" [3] => "14" ) [2] => Array ( [0] => "21" [1] => "22" [2] => "23" [3] => "24" ) )