2011-01-11 4 views
4
 

$string = "id"; 

want result to be like 

$id = "new value"; 
 

Как это кодировать в php?имя строки php как переменная

Редактировать ..

Как насчет ниже?

 

$column = array("id","name","value"); 

let say found 3 row from mysql 

want result to be like this 

$id[0] = "3"; 
$id[1] = "6"; 
$id[2] = "10"; 

$name[0] = "a"; 
$name[1] = "b"; 
$name[2] = "c"; 

$value[0] = "bat"; 
$value[1] = "rat"; 
$value[2] = "cat"; 

 
+0

Хотя PHP действительно позволяет вам сделать это (как ответы ниже) показывают, он обычно считается плохим конструктивным принципом, и это делает ваш код намного сложнее в обслуживании. Более подходящий подход, вероятно, заключается в использовании ассоциативного массива, например '$ my_array ['id'] =" новое значение ";' – Gareth

+1

Вам нужно будет создать отдельный вопрос для обновления. – RobertPitt

ответ

1

Второго ответ в ответ на ваши изменения:

$result = mysql_query($sql); 
$num = mysql_num_rows($result); 
$i = 0; 
$id = array(); 
$name = array(); 
$value = array(); 

if ($num > 0) { 
    while ($row = mysql_fetch_assoc($result)) { 
    $id[$i] = $row['id']; 
    $name[$i] = $row['name']; 
    $value[$i] = $row['value']; 
    $i++; 
    } 
} 

Это петля вокруг вашего результата, используя счетчик $i в качестве ключа для ваших результатов массивов.

EDIT

Дополнительный ответ в ответ на ваш комментарий:

while ($row = mysql_fetch_assoc($result)) { 
    foreach($row as $column_name => $column_value) { 
    $temp_array[$column_name][$i] = $column_value; 
    } 
    $i++; 
} 

foreach ($temp_array as $name => $answer) { 
    $$name = $answer; 
} 

Этот код создает временный многомерный массив для хранения имен столбцов и значения петель вокруг этого массива, чтобы создать переменные массивы переменных. В качестве стороны я не должен был использовать временный массив, так как $$column_name[$i] не работает, мне бы хотелось увидеть альтернативные ответы на эту проблему.

Заключительная записка @ Пайсал, я вижу, вы никогда не принимали ответа, я бы не приложил много усилий, если бы видел это раньше!

+0

Что делать, если вместо определения переменной id, name, value вручную, нужно взять ее из $ column array. Надеюсь, вы под вопросом, почему я определяю $ array array. – Paisal

+0

@Paisal Я обновил свой ответ для динамического изменения имен столбцов. Имейте в виду, что @Marco Mariani сказал о том, что код трудно читать –

3

Вы ищете Variable Variables

$$string = "new value"; 

позволит вам позвонить

echo $id; // new value 

Позже в сценарии

1

Вы можете сделать это

$$string = "new value"; 

Жюст двойной $

0

Вы имеете в виду variable variables?

Это было бы сделать что-то вроде этого:

$string = "id"; 
$$string = "new value"; 

Это производит переменную $id со значением "new value".

8

Theres 2 Основные методы

Первый двойной $ (Variable Variable) как так

$var = "hello"; 
$$var = "world"; 
echo $hello; //world 

//You can even add more Dollar Signs 

$Bar = "a"; 
$Foo = "Bar"; 
$World = "Foo"; 
$Hello = "World"; 
$a = "Hello"; 

$a; //Returns Hello 
$$a; //Returns World 
$$$a; //Returns Foo 
$$$$a; //Returns Bar 
$$$$$a; //Returns a 

$$$$$$a; //Returns Hello 
$$$$$$$a; //Returns World 

//... and so on ...// 

@source

а второй метод состоит в использовании {} LIK так

$var = "hello"; 
${$var} = "world"; 
echo $hello; 

Вы также можете сделать:

${"this is a test"} = "works"; 
echo ${"this is a test"}; //Works 

У меня была пьеса о с этим на обтекаемой объекты несколько недель назад и получил некоторые интересные результаты

$Database->Select->{"user id"}->From->Users->Where->User_id($id)->And->{"something > 23"}; 
+0

спасибо, что у меня новый вопрос (править выше) – Paisal

0

Не делай этого. Просто используйте массив.

$arr[$string] = 'new value'; 

исй: How do I build a dynamic variable with PHP?

+0

Не изменяйте переменные? Что вы думаете по этому поводу, если вы не возражаете, чтобы я спросил? –

+0

это грязный, недостижимый, код, загрязняющий пространство имен. –

0

Попробуйте это:

$result = mysql_query($sql); 
$num_rows = mysql_num_rows($result); 
$i = 0; 

if ($num_rows) { 
    while ($row = mysql_fetch_assoc($result)) { 
    foreach($row AS $key => $value) { 
     ${$key}[$i] = $value; 
    } 

    $i++; 
    } 
} 
0

Для тех из нас, кто нуждается в вещи, объяснил очень подробно ...

// Creates a variable named '$String_Variable' and fills it with the string value 'id' 
$String_Variable = 'id'; 

// Converts the string contents of '$String_Variable', which is 'id', 
// to the variable '$id', and fills it with the string 'TEST' 
$$String_Variable = 'TEST'; 

// Outputs: TEST 
echo $id; 

// Now you have created a variable named '$id' from the string of '$String_Variable' 
// Essentially: $id = 'Test'; 
Смежные вопросы