[英]Add element and key to array php
我正在嘗試將元素添加到數組,但是得到一個奇怪的輸出。 代碼如下:
$getalltokens = $db->query("SELECT * FROM Tables WHERE available = '$comp'");
while ($row = $getalltokens->fetch(PDO::FETCH_ASSOC))
{
$fid = $row['FID'];
$tok = $row['token'];
$sql = $db->query("SELECT Firstname,Lastname FROM Users WHERE Token = '$tok'");
$rez = $sql->fetch(PDO::FETCH_ASSOC);
$names[] = $rez;
$fidzy = array(
'FID' => $fid
);
array_push($names, $fidzy);
}
$getalltokens = $db->query("SELECT FID FROM Tables WHERE available = '$comp'");
$tokenz = $getalltokens->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($names);
我得到的輸出是:
[{"Firstname":"Test","Lastname":"Test"},{"FID":"5"},
{"Firstname":"Test2","Lastname":"Test2"},{"FID":"4"}]
雖然我需要的是FID放在$names
數組中,所以它更像是:
[{"Firstname":"Test","Lastname":"Test","FID":"5"}]
$rez['FID'] = $fid; /* Added */
$names[] = $rez;
/* $fidzy and array_push removed */
您可以使用代替array_push()
這樣的方法
$arrayname[indexname] = $value;
如果您使用array_push()
<?php
$array[] = $var;
?>
Note: If you use `array_push()` to add one element to the array it's
最好使用
$array[] =
因為那樣就沒有調用函數的開銷。Note: `array_push()` will raise a warning if the first argument is not an array. This differs from the `$var[]` behavior where a new array
被建造。
參考陣列推送
解決當前特定問題的方法是在單個查詢中選擇所有必需的數據,而無需在任何數組中添加元素。 這是通過以下方式完成的:
$sql = $db->query("SELECT
Users.Firstname,Users.Lastname,Tables.FID
FROM Users,Tables
WHERE Users.Token = Tables.token");
$rez = $sql->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($rez);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.