[英]Pushing key value pairs into an array from an SQL query
I'm pulling data from a database, and would like to insert it into an array. 我正在从数据库中提取数据,并希望将其插入到数组中。 I would like the array to look like
我希望数组看起来像
$myArray = array(
$id => array(
"title" => $title,
"description" => $description,
"tag" => $tag,
"link" => $link
)
)
Where $id is the ID pulled from the database, $title is pulled from the "title" column of the database, and so on. 其中$ id是从数据库中提取的ID,$ title是从数据库的“ title”列中提取的,依此类推。
I need all of this data to be connected so that I can use a template to display the information easily. 我需要连接所有这些数据,以便可以使用模板轻松显示信息。
Currently this is my code: 目前,这是我的代码:
<?php
$query = mysqli_query($db_conn, $advice);
//Arrays for the key value pairs
$pregnancyArray = array();
$postpartumArray = array();
$babyArray = array();
$toddlerArray = array();
$parentingArray = array();
//Arrays for now
$pregnancyTitleArray = array();
$pregnancyLinkArray = array();
$pregnancyDescriptionArray=array();
$pregnancyTagArray=array();
$postpartumTitleArray = array();
$postpartumLinkArray = array();
$babyTitleArray = array();
$babyLinkArray = array();
$toddlerTitleArray = array();
$toddlerLinkArray = array();
$parentingTitleArray = array();
$parentingLinkArray = array();
function createSlug($slug)
{
$LNSH = '/[^\-\s\pN\pL]+/u';
$SDH = '/[\-\s]+/';
$slug = preg_replace($LNSH, '', mb_strtolower($slug, 'UTF-8'));
$slug = preg_replace($SDH, '-', $slug);
$slug = trim($slug, '-');
return $slug;
}
while ($row = mysqli_fetch_array($query)) {
$id = $row['adviceID'];
$title = $row['title'];
$cat = $row['cat'];
$link = createSlug($title);
$description = $row['description'];
$tag = $row['tag'];
if ($cat === 'pregnancy') {
array_push($pregnancyTitleArray, $title);
array_push($pregnancyLinkArray,$link);
array_push($pregnancyDescriptionArray, $description);
if($tag){
array_push($pregnancyTagArray, $tag);
}
else {
array_push($pregnancyTagArray, "nt");
}
} elseif ($cat === 'postpartum') {
array_push($postpartumTitleArray, $title);
array_push($postpartumLinkArray,$link);
} elseif ($cat === 'baby') {
array_push($babyTitleArray, $title);
array_push($babyLinkArray,$link);
} elseif ($cat === 'toddler') {
array_push($toddlerTitleArray, $title);
array_push($toddlerLinkArray,$link);
} elseif ($cat === 'parenting') {
array_push($parentingTitleArray, $title);
array_push($parentingLinkArray,$link);
} else {
continue;
}
}
?>
<section class="content" id="pregnancy-advice">
<h2 class="heading">Pregnancy Advice</h2>
<ul class="justified-content" style="list-style-type: none;">
<?php
for($i = 0; $i < sizeof($pregnancyTitleArray) && $i <= 15; $i++){
echo "<li class=\"extra-spacing\"><a href=\"atemplate.php?\"" . $pregnancyLinkArray[$i] . ">" . $pregnancyTitleArray[$i] . "</a></li>";
}
?>
<a class="more-links" href="adviceCat.php?cat=pregnancy">More -></a>
</ul>
</section>
Can you just build an array with your result set like so: 您可以像这样用结果集构建一个数组吗?
$results = [];
while ($row = mysqli_fetch_array($query)) {
$results[$row['adviceID']] = $row;
$results[$row['adviceID']]['link'] = createSlug($title);
}
If you'd only like to have certain data in your array you can build it differently: 如果您只想在数组中包含某些数据,则可以采用其他方式构建它:
$results = [];
while ($row = mysqli_fetch_array($query)) {
$results[$row['adviceID']] = array(
'title' => $row['title'],
'description' => $row['description'],
'tag' => $row['tag'],
'link' => createSlug($title),
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.