Цикл по массиву: новая переменная для каждого значения - PullRequest
1 голос
/ 17 октября 2019

Допустим, у меня есть массив, который выглядит так:

$sql = array("name"=>"Peter", "active"=>1 , "age"=>30)

и цикл выглядит так:

    for($i=0;$i<count($sql);$i++){
       $value[$i] = ($sql[$i]);
       echo $value[$i];
     }

Я хочу, чтобы цикл повторялсячерез массив и назначить каждое значение новой переменной. В этом коде я пытался заставить его хранить значения в:

value1

value2

value3

Но, к сожалению, это не работает, поэтому я здесьищу помощи. Или проблема в том, что я получил ассоциативный массив вместо числового? Я не хочу использовать этот цикл только для этого массива, но также для других массивов с разными ключами и длиной.

Редактировать: Я думаю, что, возможно, я написал недостаточно ясно, чтобы сказать вам, чего я хочу достичь:хотите иметь три строковых значения в конце цикла, которые не хранятся в массиве:

Переменная1 должна содержать «Питер»

Переменная2 должна содержать «1»

Переменная3 должнасодержать "30"

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

Извините за недостаточную ясность, я все еще новичок в stackoverflow.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Исходя из вашего условия, присваивайте каждое значение новой переменной , я думаю, что вы хотели бы использовать Переменные . Вот пример:

<?php
    $sql = array("name"=>"Peter", "active"=>1 , "age"=>30);
    $count = 1;
    foreach ($sql as $value) {
        $x = 'value'.$count;
        $$x = $value; //here's the usage of Variable variables
        $count++;
    }

    echo $value1.'<br/>';
    echo $value2.'<br/>';
    echo $value3.'<br/>';

Я перешел к вашим выборочным переменным ($ value1, $ value2 и т. Д.) . Я также изменил ваш цикл на foreach, чтобы легко зациклить массив. И я также добавил $count, который будет служить номером переменной $value.

$count не понадобится, если ваш индекс числовой, но, поскольку это ассоциативный массив, что-токак это необходимо для дифференциации созданных переменных

Краткое пояснение по запросу:

$x содержит имя переменной, которую вы хотите создать (в этом случае value1 ) , затем, когда вы добавляете еще $ к $x (который становится $$x) , вы присваиваете текущее значение$x (равняется $value1='Peter')

0 голосов
/ 17 октября 2019

Для динамического определения переменной используйте $$. Демо

$sql = array("name"=>"Peter", "active"=>1 , "age"=>30);
$index = 1;
foreach($sql as $value){
    ${"value" . $index++} = $value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...