Преобразование текстовой строки в ассоциативный массив в PHP [duplicate]

Невозможность связывания с соответствующими библиотеками / объектными файлами или компиляция файлов реализации

Обычно каждая единица перевода генерирует объектный файл, содержащий определения символов, определенных в этой единицы перевода. Чтобы использовать эти символы, вам необходимо связать эти объектные файлы.

В разделе gcc вы должны указать все объектные файлы, которые должны быть связаны вместе в командной строке, или скомпилировать файлы реализации вместе.

g++ -o test objectFile1.o objectFile2.o -lLibraryName

Здесь libraryName - это просто имя библиотеки, без добавления к платформе. Так, например, в файлах библиотеки Linux обычно называют libfoo.so, но вы должны писать только -lfoo. В Windows этот же файл можно назвать foo.lib, но вы будете использовать тот же аргумент. Возможно, вам придется добавить каталог, в котором эти файлы можно найти, используя -L‹directory›. Обязательно не записывайте пробел после -l или -L.

Для XCode: добавьте пути поиска заголовка пользователя -> добавьте путь поиска библиотеки -> перетащите фактическую ссылку библиотеки в

В MSVS файлы, добавленные в проект, автоматически связывают их объектные файлы, и будет создан файл lib (в общем использовании). Чтобы использовать символы в отдельном проекте, вам нужно будет добавить файлы lib в параметры проекта. Это делается в разделе Linker свойств проекта в Input -> Additional Dependencies. (путь к файлу lib должен быть добавлен в Linker -> General -> Additional Library Directories). При использовании сторонней библиотеки, которая предоставляется с файлом lib, отказ в этом обычно приводит к ошибке.

Также может случиться так, что вы забудете добавить файл в компиляцию, и в этом случае объектный файл не будет сгенерирован. В gcc вы должны добавить файлы в командную строку. В MSVS добавление файла в проект заставит его скомпилировать его автоматически (хотя файлы могут, вручную, быть отдельно исключены из сборки).

В программировании Windows контрольный знак, который вы не связывали необходимая библиотека состоит в том, что имя неразрешенного символа начинается с __imp_. Посмотрите имя функции в документации, и она должна сказать, какую библиотеку вам нужно использовать. Например, MSDN помещает информацию в поле внизу каждой функции в разделе «Библиотека».

0
задан Walllter 13 December 2013 в 17:15
поделиться

6 ответов

Попробуйте это (с неправильными именами рабочих переменных, но с его работой) -

<?php

$str = "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";

$mstr = explode(",",$str);
$a = array();
foreach($mstr as $nstr )
{
    $narr = explode("=>",$nstr);
$narr[0] = str_replace("\x98","",$narr[0]);
$ytr[1] = $narr[1];
$a[$narr[0]] = $ytr[1];
}
print_r($a);

Codepad Link - http://codepad.org/EqysY1CZ

2
ответ дан swapnesh 27 August 2018 в 02:30
поделиться

Вам нужно использовать функцию разрыва в PHP. refer-> http://cz1.php.net/explode

-3
ответ дан Devendra Lattu 27 August 2018 в 02:30
поделиться

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

<?php
$var = "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
$var = str_replace(', ', ',', $var);
$rows = explode(',', $var);
$array = [];
foreach($rows AS $row){
    preg_match("/^'(.+)' \=\> '(.+)'\$/", $row, $matches);
    $array[$matches[1]] = $matches[2];
}
var_dump($array);
?>

Пример: http://ideone.com/4oad4t

2
ответ дан Jessica 27 August 2018 в 02:30
поделиться

попробуйте этот код и используйте метод explode () и foreach, чтобы получить ваш выход

<?php


   $string="'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";

   $a=explode("=>",$string);
   $c=array();
   $i=0;
 foreach($a as $k=>$v){

   if($i%2==0){
   $b[]=$v;
   }else{
   $c[]=$v;
   }
   $i++;
   }
  $d=array_combine($b,$c);
 print_r($d);

?>
2
ответ дан Nambi 27 August 2018 в 02:30
поделиться

Самый быстрый и простой, но ДЕЙСТВИТЕЛЬНО ИНСЕКЦИЯ

$str = "array('3'=>'www.tension.com','1'=>'www.seomeuo.com','requestedBy'=>'1')";
eval("\$array = $str;");

Вы никогда не должны использовать этот подход, есть другие способы сделать это как: serialize() и unserialize()

3
ответ дан sergio 27 August 2018 в 02:30
поделиться

Грязная логика находится здесь:)

<?php 
$str="'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
echo $str='$arr='.'array('.$str.');';
eval($str);
echo "<pre>";
print_r($arr);
?>
2
ответ дан sumit 27 August 2018 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: