我正在尝试从php创建javascript变量,这是我想要的。
<?PHP echo "var color_name=[<?PHP echo $color_name;?>]"; //var color_name=["Green","Pink"];
<?PHP echo "var style_name=[<?PHP echo $style_name;?>]"; //var style_name=["Basic","Classic"];
这是我尝试过的,
<?php
$predifined_qry = "SELECT attribute_column_name
FROM predefined_attributes
WHERE category_id=$id";
$predifined_result = mysqli_query($predifined_qry);
$columnNames = Array();
while ($predifined_result_row = mysqli_fetch_assoc($predifined_result)) {
$columnNames[] = $predifined_result_row['attribute_column_name'];
}
现在我可以使用foreach循环获取数组中的attribute_column_name
,但我不知道如何在attribute_column_value
,{{1}这样的变量中获取$style_name
数组}。请帮忙。
答案 0 :(得分:1)
首先,如果您只需要1列,并且您获得的资源/数据不是很大,您可以只获取所有并提取列
您可以通过JSON
在js中公开您的php变量<?php
$predifined_result = mysqli_query($predifined_qry);
$predifined_rows = mysqli_fetch_all($predifined_result, MYSQLI_ASSOC);
$columnNames = array_column($predifined_rows, 'attribute_column_name');
?>
<script>
var columnames = JSON.parse("<?= json_encode($columnNames); ?>");
</script>
现在,如果我们添加其他字段:
<?php
$predifined_result = mysqli_query($predifined_qry);
$predifined_rows = mysqli_fetch_all($predifined_result, MYSQLI_ASSOC);
$columnNames = array_column($predifined_rows, 'attribute_column_name');
$columnValues = array_column($predifined_rows, 'attribute_column_value');
// array_combines uses the first array as the key and the second as the value
$columns = array_combine($columnNames, $columnValues);
?>
<script>
var columns = JSON.parse("<?= json_encode($columns); ?>");
</script>
编辑 如在注释中,键只能在哈希表/数组中出现一次 所以我们需要为每个键生成一个值数组
<?php
$predifined_qry = "SELECT attribute_column_name, attribute_column_value
FROM predefined_attributes
WHERE category_id=$id";
$predifined_result = mysqli_query($predifined_qry);
$columns = [];
while($row = mysqli_fetch_assoc($predifined_result)) {
if(!array_key_exists($row['attribute_column_name'], $columns)) {
$columns[$row['attribute_column_name']] = [];
}
$columns[$row['attribute_column_name']][] = $row['attribute_column_value'];
}
?>
<script>
var columns = JSON.parse("<?= json_encode($columns); ?>");
</script>
答案 1 :(得分:1)
第一名:您还需要选择attribute_column_value
列
SELECT attribute_column_name,attribute_column_value FROM predefined_attributes where category_id=$id
第二名:您需要将两个列值推送到两个不同的数组中,如此
while ( $predifined_result_row = mysqli_fetch_assoc($predifined_result) ) {
$color_name[] = $predifined_result_row['attribute_column_name'];
$style_name[] = $predifined_result_row['attribute_column_value'];
}
第3名:简单地应用json_enocde
并像这样回复
<script>
var color_name=<?php echo json_encode($color_name); ?>;
var style_name=<?php echo json_encode($style_name); ?>;
</script>
答案 2 :(得分:-1)
$columnValues[] = $predifined_result_row['attribute_column_value'];
您可以将此代码粘贴到while
循环
并且不要忘记获取需求字段表单数据库:
$predifined_qry="SELECT attribute_column_name,attribute_column_value FROM predefined_attributes where category_id=$id";