我是php的新手,但到目前为止我真的很喜欢它!
现在我偶然发现array_merge
的问题。
这是我的代码,它只是抓取我数据库中指定的每个表,然后将其转换为一个大的json文件:
$tables = array("buildings", "medical", "other", "tools", "traps", "weapons");
foreach ($tables as $table) {
// Get tables from database
$sth = $db->query("SELECT * FROM $table");
$result = $sth->fetchAll();
// Merge arrays together
if ($arr === null) {
//echo "its 0 <br/> ";
$arr = array( "$table" => $result );
} else {
//echo "more than 0 <br/> ";
$arr2 = array( "$table" => $result );
$merge = array_merge($arr, $arr2);
}
} //End loop
echo $merge;
到目前为止它正在以某种方式工作,我设法得到第一个表“建筑物”和最后一个表“武器”以我想要的方式显示!
但我不明白为什么它跳过其他的..
我认为它与$arr2
有关,我需要为每个表指定一个唯一的数组。但是我怎样才能做到这一点?这是要走的路还是有更有效的方法来实现这一目标?
谢谢!
答案 0 :(得分:1)
您可以将所有内容放在一个唯一的数组中,例如:
$myArray["$table"] = $result;
答案 1 :(得分:1)
$("#option_one").click(function() {
$("#input").val('Option 1');
$.getScript( "path/calculating.js" )
.done(function( script, textStatus ) {
//Just after the scripts finishes loading you will be able
//to perform/use functionality included on this script
console.log( textStatus );
})
.fail(function( jqxhr, settings, exception ) {
console.log("Triggered ajaxError handler.");
});
});
创建新数组并将索引设置为表名,并将其结果存储在该数组中。
答案 2 :(得分:1)
如果我理解正确......
而不是这两行
var any = false;
$("select").change(function(){
var str = $("select").val();
var n = str.toString().search("Any,");
if(n==0 && !any){
$("select option[value!='Any']").each(function(){
$(this).attr("selected",false);
});
any = !any;
$("select option[value='Any']").attr("selected",true);
}
else if(str.toString().search(",")!=-1){
any = !any;
$("select option[value='Any']").attr("selected",false);
}
});
你可以试试这个:
$arr2 = array( "$table" => $result );
$merge = array_merge($arr, $arr2);
答案 3 :(得分:1)
由于这条线而失败
$merge = array_merge($arr, $arr2);
您的合并始终是$ arr(这是$ tables中的第一个条目)和$ arr2的合并,$ arr2是正在处理的最新条目。您没有将数据与先前合并的数据合并,例如
$arr = array_merge($arr, $arr2)
此外,您可以通过将$ arr设置为空数组来启动来摆脱if / else逻辑。
$arr = array();
答案 4 :(得分:1)
您的代码可以大大简化。
$tables = array("buildings", "medical", "other", "tools", "traps", "weapons");
foreach ($tables as & $table) {
$table = $db->query("SELECT * FROM $table")->fetchAll();
}
echo json_encode($tables);
当然,您仍然需要检查错误(数据库和JSON错误),以便使代码更健壮,但是您可以更简单地创建更好的代码。简单就是好,特别是在编程方面。