#php
#php
Вопрос:
Я пытаюсь динамически генерировать строку n, а затем использовать ее внутри list()
, чтобы перехватывать значения массива в переменных.
Код :
<?php
$bubba = "value1, value2, value3, value4, value5, value6, value7";
$hubba = explode(",", $bubba);
$num = count($hubba);
ob_start();
for($i=1; $i<=$num; $i ){
echo ('$k'.$i.', ');
}
$varname = ob_get_clean();
$varname = substr($varname, 0, -2);
list(echo $varname;) = $hubba;
Я хочу, чтобы это выглядело так:
list($k1, $k2, $k3, $k4, $k5, $k6, $k7) = $hubba;
echo $k1; // must echo value1
?>
Но список просто не готов принять переменную строку. Как это сделать?
Комментарии:
1. Что бы вы ни пытались сделать, это неправильный путь.
2. Если вы удалите «echo» и смайлик из
list()
вызова, вы можете получить лучшие результаты.3. вы имеете в виду: list ($ varname) ?? Я пробовал это, но list не принимает это
4. @AbraCadaver Тогда как я могу извлечь отдельное значение из строки и использовать их по отдельности? Да, это можно сделать с помощью code: foreach($ hubba как $ k => $ v) {} , но без этого??
5. Вам нужно показать, что у вас есть,
"value1, value2, value3, value4, value5, value6, value7"
и как вы хотите, чтобы это выглядело или как вам нужно это использовать.
Ответ №1:
Вы пытаетесь решить проблему неправильным способом. Большинство опытных разработчиков скажут вам, что они шли по этому пути, и это тупик. Зачем использовать $k0
вместо существующего $k[0]
? Однако, для развлечения, вот рабочий пример:
extract($hubba, EXTR_PREFIX_ALL, 'k');
echo $k_0;
Или другой, для развлечения, который делает это так, как вы описываете:
foreach($hubba as $k => $v) {
${'k'.($k 1)} = $v;
}
echo $k1;
Или, наконец, для большего удовольствия, используя list()
без видимой причины:
for($i=1; $i<=$num; $i ) {
$var[] = '$k'.$i;
}
$vars = implode(', ', $var);
eval("list($vars) = $hubba;");
echo $k1;
Я бы посоветовал вам указать, ПОЧЕМУ вы считаете, что вам это нужно, и, безусловно, есть лучшее решение.
Комментарии:
1. Спасибо, приятель. Я знал это 2-е решение, но я просто случайно пошел этим путем и обнаружил, что оно не работает. Затем я хотел знать причину, по которой list () не принимает это. В любом случае спасибо! 🙂
2. На самом деле это не то, для чего нужен список, но добавляет больше удовольствия.
3. @luna.romania, лучший способ сказать спасибо — принять ответ 🙂