使用数字引用访问FETCH_ASSOC数组中的特定元素

时间:2017-01-02 19:16:33

标签: php pdo

我在这里有一个使用FETCH_ASSOC的简单例子:

// array 1
$sql1 = "SELECT shortname, unicode FROM my_table ORDER BY RAND() LIMIT 4";
$stmt1 = $pdo->prepare($sql1);
$stmt1->execute();
$data1 = $stmt1->fetchAll(PDO::FETCH_ASSOC);

// array 2
$sql2 = "SELECT shortname, unicode FROM my_table ORDER BY RAND() LIMIT 4";
$stmt2 = $pdo->prepare($sql2);
$stmt2->execute();
$data2 = $stmt2->fetchAll(PDO::FETCH_ASSOC);

循环遍历第一个数组:

$counter = 0;

foreach($data1 as $item) {

    // get items from table
    $shortname = $item['shortname'];
    $unicode = $item['unicode'];

}

我可以看到我检查它看起来像这样的$ data1数组的格式:

Screenshot of example array data

我可以使用foreach循环遍历第一个数组。

每次循环时,我都希望从另一个数组中访问相应的值(在$ data2中)。

我发现语法无法从数组中引用特定的短代码和unicode配对。

例如,我如何引用第3个元素中的数据,例如"心脏"和" 2764"?我想我需要以某种方式传递数字2,说我想要访问第3个元素中的数据,但我不确定如何?

感谢下面arkascha的帮助,我得到了答案:

// array 1
$sql1 = "SELECT shortname, unicode FROM my_table ORDER BY RAND() LIMIT 4";
$stmt1 = $pdo->prepare($sql1);
$stmt1->execute();
$data1 = $stmt1->fetchAll(PDO::FETCH_ASSOC);

// array 2
$sql2 = "SELECT shortname, unicode FROM my_table ORDER BY RAND() LIMIT 4";
$stmt2 = $pdo->prepare($sql2);
$stmt2->execute();
$data2 = $stmt2->fetchAll(PDO::FETCH_ASSOC);

$counter = 0;

foreach($data1 as $item) {

    // get data from $data1
    $shortname1 = $item['shortname'];
    $unicode1 = $item['unicode'];

    // get data from $data2 by referincing them using $counter value
    $shortname1 = $data2[$counter]['shortname'];
    $unicode1 = $data2[$counter]['unicode'];

    // build the values from above into a concatenated HTML string to output later on...

    // increment the counter
    $counter ++;

}

1 个答案:

答案 0 :(得分:0)

当您从数据库中获取结果并且您不知道哪个索引'heart'和'2764'存在时,您可以使用此技术来查找索引。

$inde = array_search('2764', array_column($data1, 'unicode'));

此代码返回'heart'和'2764'存在的索引。

现在,您可以使用$data1[$key];

访问这些值