Php 选择变量并存储到多维数组中

Php 选择变量并存储到多维数组中,php,arrays,Php,Arrays,我知道多维数组是如何工作的,但我对它还不熟悉 例如 我试图做的是,从数据库中获取一个变量并将其存储在数组中 $query = "SELECT subject FROM #__wordBank ORDER BY RAND() LIMIT 1"; $db->setQuery($query); $rows=$db->loadObjectList(); $arrayAns = array( subject => "$rows") $arrayAns[

我知道多维数组是如何工作的,但我对它还不熟悉

例如

我试图做的是,从数据库中获取一个变量并将其存储在数组中

$query = "SELECT subject FROM #__wordBank ORDER BY RAND() LIMIT 1";
        $db->setQuery($query);
        $rows=$db->loadObjectList();

$arrayAns = array( subject => "$rows")
$arrayAns[] = array('subject'=> $rows['subject']);
这样做吗?

试试这个: 如果来自数据库的结果存储在行中:

在这里,$value中的所有变量都将存储到newArray中


另外,请参见更改语法,使其看起来像您还拥有的-

现在我们要做的是向原始数组中添加另一个元素。您可以使用缩写[]语法将另一个元素推送到数组的顶部

$query = "SELECT subject FROM #__wordBank ORDER BY RAND() LIMIT 1";
        $db->setQuery($query);
        $rows=$db->loadObjectList();

$arrayAns = array( subject => "$rows")
$arrayAns[] = array('subject'=> $rows['subject']);
这条线在功能上与这条线相同——

array_push($arrayAns, array('subject'=> $rows['subject']));
差不多了!但不完全如此

以下是我将如何处理这件事:

$arrayAns = array(
    array('subject' => "he"),
    array('subject' => "I"),
    array('subject' => "they")
);

$query = "SELECT subject FROM #__wordBank ORDER BY RAND() LIMIT 1";
$db->setQuery($query);
$rows=$db->loadObjectList();

$arrayAns[] = array('subject' => $rows);

根据您使用的DB API,您可以选择自动将数据检索为多维数组。检查是否可以使用$rows->toArray或类似的方法

否则,不是最理想的,但简单而干净的方法是通过您的$rows列表foreach并构建您想要的数组

顺便说一句,您在上面定义的数组在PHP中的定义如下:

$myArray = array(
    array(
        'subject' => 'he'
    ),
    array(
        'subject' => 'I'
    ),
    array(
        'subject' => 'they'
    )   
);

您发布的代码中有语法错误。。。您在$arrayAns的最后一个元素中遗漏了a。此外,多维数组的语法也有轻微缺陷。。。我将假设在发布问题时这是一个错误,并且您的实际代码与此不完全相同……OP在其查询中指定了限制1,并且仅选择了一个字段。我不相信$rows会有超过一个元素本身。。。此处不需要foreach…取决于loadObjectList返回的内容$行本身可能只是一个关联数组-将它像那样推到数组上不会获得OP指定的相同格式…我想你会发现它与原始格式Hi guys thx完全相同,以帮助我,只是为了检查我的理解。如果我需要选择多个,我可以这样做:$query=selectsubject FROM\uuuu wordBank ORDER BY RAND LIMIT 1$db->setQuery$query$行1=$db->loadObjectList$query=按RAND LIMIT 1从uuu wordBank ORDER中选择动词$db->setQuery$query$rows2=$db->loadObjectList$arrayAns[]=数组'subject'=>$rows1['subject']$arrayAns[]=array'verb'=>$rows2['verb'];真的吗?是的,基本上这是可行的。虽然我很确定你可以优化它,不必进行多个查询。如果没有更多的细节,就很难确定。。。
$myArray = array(
    array(
        'subject' => 'he'
    ),
    array(
        'subject' => 'I'
    ),
    array(
        'subject' => 'they'
    )   
);