PHP:在另一个获取数据库行的数组中包含一个数组

PHP: Include an array inside another array that gets DB rows

while 循环获取 DB 行:

    while($row = $result->fetch_assoc()){
        $metadata_field74[] = $row['field74'];
        $metadata_field75[] = $row['field75'];
        $metadata_field76[] = $row['field76'];
        $metadata_field77[] = $row['field77'];
    }

这些行基于另一个数据库 table。基本上这个循环应该根据从数据库查询接收到的另一个值数组来获取行。

这些值(field74、field75 等)存储在数组 $metadata_id_basic[] 中。 我像这样从该数组中获取值并插入到 while 循环中:

    while($row = $result->fetch_assoc()){

        foreach ($metadata_id_basic as $value){
            $ref = '$metadata_'.$value.'[] = $row[\''.$value.'\'];';
            echo $ref;
        }
    }

但是没有看到行数组。如果我打印 $ref 它看起来像:

        $metadata_field74[] = $row['field74'];
        $metadata_field75[] = $row['field75'];
        $metadata_field76[] = $row['field76'];
        $metadata_field77[] = $row['field77'];

那么为什么while循环不能正确读取呢?

$ref = '$metadata_'.$value.'[] = $row[\''.$value.'\'];';

将拼凑一个字符串而不是初始化变量。

看看:Multidimensional Arrays

我不知道它在做什么。

  '$metadata_'.$value.'[] = $row[\''.$value.'\'];';

但是,也许它应该是这样的?

$metadata[$value][] = $row[$value];

你应该在某处初始化 $metadata = array()。如果你真的想要这个

 '$metadata_'.$value.'[]

我建议这样做。

  ${'metadata_'.$value}[] = .....

那么它就是一个你可以正常使用的实际变量。你现在拥有的只是一个字符串,或者换句话说,只是单词..

这可能就是您想要的,在那种情况下您仍然需要这个

   $ref =  '$metadata_'.$value.'[] = '.$row[$value];

我不知道这意味着什么 So why does the while loop not read it correctly? 什么是正确的?

另外,如果不知道 $metadata_id_basic 是什么或者你想要得到什么作为最终结果,很难说,但如果你只想要 $row 的键,你可以这样做没有外部依赖。

  foreach ($row as $key => $value){

例如

foreach 循环只是简单地输出一个字符串,而不是用数据库中的值填充一个变量。

另外,我不确定你的代码是想要数组中的数据还是多个变量,所以这里有两个版本

要将数据放入多个单独的变量中:

while($row = $result->fetch_assoc()){

    foreach ($metadata_id_basic as $value){
        $var_name = metadata_' . $value;
        $$var_name = $row[$value];
        echo '$' . $var_name . ' : ' . $$var_name;
    }
}

这应该创建 $metadata_XXXXX 变量。

将您的数据放入数组中,索引为 $metadata_id_basic:

$metadata = array();
while($row = $result->fetch_assoc()){

    foreach ($metadata_id_basic as $value){
        $metadata[$value] = $row[$value];
    }
}

print_r($metadata);

echo 和 print_r 语句在那里向您展示已创建的内容。