我正在查询MS SQL Server并将结果存储在json数组中,然后将结果传递给Javascript。我的问题是基于如果变量isset,数组长度应该是4或5长度。但是,阵列始终显示长度为5。
这是我正在使用的php。
<?php
$sql = "Select ";
if (isset($_GET['namepull'])) {
$sql .= "name,";
}
$sql .= " address, city, state, zip from employeefile";
$db->setQuery($sql);
$rows = $db->loadRowList();
$output = array();
foreach ($rows as $row) {
array_push($output, $row);
}
echo $sql;
$jsondata = json_encode($output[0]);
?>
对我来说,下面的查询字符串应该显示数组长度
4 = Select address, city, state, zip from employeefile
5 = Select name, address, city, state, zip from employeefile
现在我遇到的问题是,无论查询是什么,总是会产生下面<script>
长度为5的问题。我应该如何修改<script>
以便返回准确的计数?
<script>
var arrayfromphp = <?php echo $jsondata; ?>;
alert (arrayfromphp.length);
</script>
如果我执行console.log(arrayfromphp)
计数应为4时的最后一个元素始终为undefined x 1
修改
如果我使用下面的var_dump
是我得到的输出(这是我期望的)
Array ( [0] => XXXXXXXXX [1] => New York [2] => New York [3] => 33333 )
Array ( [0] => Jackie [1] => XXXXXXXXX [2] => New York [3] => New York [4] => 33333 )
再次编辑
似乎问题源于我如何从php数组填充Javascript数组。请参阅下面的编辑,上面有注释
var arrayfromphp = <?php echo $jsondata; ?>;
//Shows accurate count of 4
console.log(arrayfromphp);
var values = [];
if (arrayfromphp.length = 5) {
for (var i = 1; i < arrayfromphp.length; i++) {
values.push(arrayfromphp[i]);
}
} else if (arrayfromphp.length = 4) {
for (var i = 0; i < arrayfromphp.length; i++) {
values.push(arrayfromphp[i]);
}
}
//Shows 5
alert(arrayfromphp.length);
//Shows 5 with undefined x 1
console.log(arrayfromphp);