如何将我的行结果添加到数组($ 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] 我将你的时间用于我的解决方案
答案 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。但是,这当然只能用于调试。