создать переменную php из строки

#php

#php

Вопрос:

Здравствуйте, у меня есть скрипт, который извлекает названия компаний из строки. Я хочу, чтобы извлеченные имена были преобразованы в переменную php. Так, например, первый результат Real Coffee Sweeden должен быть преобразован в $RealCoffeeSweeden = 0 , чтобы я мог присвоить ему значение

  $test='/showname/0406741848                              : Real Coffee Sweeden
/showname/0406741849                              : Healthzone SE
/showname/16133663413                             : FREE
/showname/16133663414                             : RadioPlantes Canada
/showname/16133663417                             : Dealsoftoday.Eu Canada
/showname/16136995593                             : FREE
/showname/16136995594                             : Club White Smile Canada
/showname/16138007442                             : FREE
/showname/16138007547                             : Mybitwave.com Canada
/showname/16465596150                             : BABY
/showname/16465696956                             : FREE
/showname/16465696957                             : FREE
/showname/16467419944                             : Mybitwave.com UK
/showname/16469181975                             : FREE
/showname/21501350                                : SecureSurf.EU NO
/showname/21501351                                : FileCloud365 Norwegian
/showname/21501352                                : FREE
/showname/21501353                                : RadioPlantes Norwegian
';


$myRows= explode("n", $test);

foreach( $myRows as $key => $value) {
    $pieces = explode(":", $value);

    $result[] =  $pieces[1];
}

foreach ($result as $res){
    $res // covert to php variable
    //example: $RealCoffeeSweeden = 0;
}
  

Комментарии:

1. невозможно протестировать, но вам нужны переменные переменные, например, после foreach . `$$res = $res; ‘ // создает переменную с именем $res

2. Переменные переменные, демонстрация: eval.in/653810 . php.net/manual/en/language.variables.variable.php

3. Вы заметили, что у FREE вас, например, более одного имени, что вы собираетесь делать с этими именами?

Ответ №1:

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

   $my_array = explode("n", $test);
  foreach($my_array as $key => $value {
     $my_string = explode(':', $value)
      ${str_replace(' ','', $my_string[1])} = $my_string;
      echo $$my_string; 
  }
  

Комментарии:

1. это довольно аккуратно. Это может перейти прямо в первый foreach, второй foreach не понадобится

2. @Duane код предназначен для динамической сборки переменной .. для получения строки операция должна использовать explode .. в правильном вложенном foreach ..

3. О, есть еще одна опечатка, которую я не распознал (отсутствует ‘ перед Real..Sweeden). Второй цикл не нужен ни в одном решении.

Ответ №2:

Для этого вы должны использовать массив. Но если вы хотите сделать это так, как вы пишете, вы можете просто сделать что-то подобное:

 foreach( $myRows as $key => $value) {
    $pieces = explode(":", $value);

    $res = str_replace(' ', '', $pieces[1]); // replace whitespaces for valid names
    $$res = 0; // note the double dollar signs
}
  

Если вы хотите использовать массив tho, сделайте что-то вроде этого:

 $result = [];
foreach( $myRows as $key => $value) {
    $pieces = explode(":", $value);

    $key = str_replace(' ', '', $pieces[1]);
    $result[$key] = 0;
}
  

Согласно вашему комментарию, измените вторую последнюю строку в цикле foreach следующим образом:

 $res = str_replace(' ', '', $res) . '_f';
  

Комментарии:

1. хорошо, это работает, и если я хочу добавить _f $RealCoffeeSweeden_f к $RealCoffeeSweeden тому, как я это сделаю?:)

2. Обновил мой ответ