如何将行结果转换为like数组($ result)

时间:2017-11-07 11:24:21

标签: php arrays

如何将我的行结果添加到数组($ output_variable);我试过了:

<?php
    require('init.php');
    session_start();
    $result = mysqli_query($conn, 'SELECT item_name , quantity FROM books WHERE book = 1644445');
    while($row = mysqli_fetch_assoc($result)){
        $da  = $row['item_name'];  
        $qty  = $row['quantity'];  
        $sql = mysqli_query($conn, "SELECT * FROM promo WHERE code='$da' LIMIT 1");
        while ($row = mysqli_fetch_array($sql)){
            $id = $row['id'];
            $type = $row['name'];
            $code = $row['recharge'];
            if(preg_match('/(9mobile)/i', $type))
                $type   = '5';
            if(preg_match('/(Glo)/i', $type))
                $type   = '5';
            if(preg_match('/(MTN)/i', $type))
                $type   = '5';
            if(preg_match('/(AIRTEL)/i', $type))
                $type   = '5';
            $disp = str_split($code, $type);
            $num = $qty;
            for($b = 0; $b<$num; $b++){
                $shown .= $disp[$b]; 
            }
            for($c = $num; $c<sizeof($disp); $c++){
                $dreturn .= $disp[$c]; #dreturn
            }
            $pa = array('$disp[$b]');
            $pa = implode(' ' ,$pa);
            echo "<br/>$pa";
            mysqli_query($conn, "UPDATE IGNORE promo SET recharge='12345678910' WHERE id=$id");
        }
    }
?>

所有我得到的输出是$ disp [$ b]  我将你的时间用于我的解决方案

1 个答案:

答案 0 :(得分:1)

1)首先,通过使用',您告诉PHP不要为任何变量解析字符串,而是显示它&#34; as-is&#34; ($作为美元字符,而不是变量开头)。从中删除'后,您将$disp[$b]的值复制到$pa

示例1(建议的修复):

$pa = array($disp[$b]);

示例2:

<?php
$foo = 'bar!';
echo '$foo';
?>

如果您执行示例2,则会将$foo视为输出,而不是bar!。只需使用双引号替换第3行中的单引号,您就会看到bar!。喜欢:echo "$foo";

使用花括号甚至可以获得相同的结果:echo '{$foo}';echo "{$foo}";

PHP版本: PHP 7.1.11 (cli) (built: Oct 25 2017 20:54:15) ( NTS MSVC14 (Visual C++ 2015) x64 )

偏离主题,但仍值得改进:

2)然后你重复使用$row(参见两个while()声明)。您应该将这两者重命名为单独的变量。您可能希望将第一个$row命名为$book,将第二个命名为$promo,以澄清您的代码,而不会丢失您以后可能依赖的任何数据。

3)然后没有必要将数组元素复制到(本地)变量(因为我记得正确的PHP4)。修复1)和2)后,可以直接使用数组元素。意思是做$disp = str_split($promo['recharge'], $type);之类的事情。它看起来整个代码都非常混乱,需要进一步的问题。我建议您使用error_reporting(-1);确保启用所有未来警告see docs。但是,这当然只能用于调试。