#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. Обновил мой ответ