在PHP中使用foreach循环为每个结果分配变量


Assigning variable on each result using foreach loop in PHP

我当前的代码如下

foreach($flowers as $flower){
        echo "Order by: " . $flower->cust_name . "with item: " . $flower->item;    
        // code result above
        // Order by: Anna Witck with item Lily
        // Order by: George Maxwel with item Rose
        // Order by: Catherine Giin with item Aster
        // and so on..
}

但我希望它更新它,以便每行结果都有不同的(两个)变量,如下所示

$anna_cust = $flower->cust_name; // result: Anna Witck
$anna_item = $flower->item; // result: Lily
$george_cust = $flower->cust_name; // result: George Maxwel
$george_item = $flower->item; // result: Rose
$catherine_cust = $flower->cust_name; // result: Catherine Giin
$catherine_item = $flower->item; // result: Aster

因此,如果它是一个数组而不是一个对象,则可以访问如下键:

$name = $flower['cust_name'];

您试图显示对象数据,如->符号,但$flower是一个数组,因此请尝试以下

<?php
    foreach($flowers as $flower){
        echo "Order by: " . $flower['cust_name'] . "with item: " .$flower['item'];    
    }
?>

像这个

$data = array();
foreach ($flowers as $flower) {
    $name = explode(' ', trim($flower->cust_name));
    // Set varibale name
    $var_cust = strtolower($name[0]) . '_cust' ;
    $var_item = strtolower($name[0]) . '_item' ;
    $data[$var_cust] = $flower->cust_name;
    $data[$var_name] = $flower->item;          
}

使用${}是创建动态变量的一种方法。所以试试下面的

<?php
foreach($flowers as $flower){
        $cast_name = explode(' ', trim($flower->cust_name));
        ${strtolower($cast_name[0]). '_cust'}=$flower->cust_name;
        ${strtolower($cast_name[0]). '_item'}=$flower->item;        
}
?>