【问题标题】:PHP objects inside arrays (HOW TO: If array key is 0, return 0. Else if array key is 2, return 2. BASIC LOGIC)数组中的 PHP 对象(如何:如果数组键为 0,则返回 0。否则,如果数组键为 2,则返回 2。基本逻辑)
【发布时间】:2013-06-07 06:34:30
【问题描述】:

我想要做什么:
以这种方式获取以逗号分隔的单个字符串上的名称列表(如果有多个):

  • Britney Spears,Lady Gaga,Miley Cyrus

发生了什么:

  • 我们在一个循环中。
  • 我正在尝试将这些 celebrities 关联到帖子 ID

所以我们为每个循环都有这个独特的$id
一个ID可以附加多个名人name

查询:

$array = $wpdb->get_results("SELECT name
FROM celebrities
WHERE id = " . $id . "");

PHP 代码:

if (is_array($array) && $array != null) {
    foreach($array as $single) {
        $array = $single->name . ',';
    }
}
else {
    $array = $array->name;
}

问题:

使用我的代码,我被限制为每个循环只有一个名人(即使数据库显示还应该有另一个名人)。

我真的只想检查是否存在多个名人name,然后将它们放在一个用逗号分隔的单个字符串中。

期望的输出:

下面是我想要完成的简单概述:

  • array(0) (没有名人) = // SHOW NOTHING
  • array(1) (找到一个名人名字) = echo $name
  • array(2) (不止一位名人) = foreach($names as $name)

Var_dump:

我只想向您展示数组结构的复杂性:

array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1620 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1683 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
[1] = >
    object(stdClass) #1611 (1) {
    ["name"]= >
    string(10)
"Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1614 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1690 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1598 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(4) {
    [0] = >
        object(stdClass) #1722 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
[1] = >
    object(stdClass) #1706 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
[2] = >
    object(stdClass) #1668 (1) {
    ["name"]= >
    string(10)
"Lady Gaga"
}
[3] = >
    object(stdClass) #1663 (1) {
    ["name"]= >
    string(10)
"Lady Gaga"
}
}
array(4) {
    [0] = >
        object(stdClass) #1615 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
[1] = >
    object(stdClass) #1708 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
[2] = >
    object(stdClass) #1723 (1) {
    ["name"]= >
    string(10)
"Lady Gaga"
}
[3] = >
    object(stdClass) #1726 (1) {
    ["name"]= >
    string(10)
"Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1598 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1663 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(1) {
    [0] = >
        object(stdClass) #1722 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1734 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1598 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1750 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1751 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1716 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1776 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1795 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1647 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1784 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(1) {
    [0] = >
        object(stdClass) #1776 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(1) {
    [0] = >
        object(stdClass) #1611 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1676 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1781 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(0) {}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1715 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1813 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1826 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1828 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1717 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1765 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(1) {
    [0] = >
        object(stdClass) #1769 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1848 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1690 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1660 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1821 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1717 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1766 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1836 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1765 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1826 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1843 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(2) {
    [0] = >
        object(stdClass) #1854 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
[1] = >
    object(stdClass) #1820 (1) {
    ["name"]= >
    string(5)
"Beyonce"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1814 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1847 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1866 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1820 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1814 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1847 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(2) {
    [0] = >
        object(stdClass) #1875 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1821 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1786 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1880 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1746 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1815 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1817 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1811 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1874 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1819 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1798 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1820 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1802 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1853 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1741 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1867 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1820 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1688 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1919 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1889 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1923 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1927 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1811 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1904 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1910 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1889 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(1) {
    [0] = >
        object(stdClass) #1927 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(1) {
    [0] = >
        object(stdClass) #1904 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(1) {
    [0] = >
        object(stdClass) #1843 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1860 (1) {
    ["name"]= >
        string(6)
    "Miley Cyrus"
}
}
array(2) {
    [0] = >
        object(stdClass) #1889 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
[1] = >
    object(stdClass) #1684 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1843 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1811 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
[1] = >
    object(stdClass) #1900 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1904 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1926 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1915 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1829 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
[1] = >
    object(stdClass) #1932 (1) {
    ["name"]= >
    string(10)
"Lady Gaga"
}
}
array(0) {}
array(2) {
    [0] = >
        object(stdClass) #1889 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
[1] = >
    object(stdClass) #1952 (1) {
    ["name"]= >
    string(5)
"Beyonce"
}
}
array(0) {}
array(0) {}
array(2) {
    [0] = >
        object(stdClass) #1915 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1829 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1932 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1892 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(3) {
    [0] = >
        object(stdClass) #1899 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
[1] = >
    object(stdClass) #1929 (1) {
    ["name"]= >
    string(5)
"Beyonce"
}
[2] = >
    object(stdClass) #1805 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1886 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1829 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1802 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(2) {
    [0] = >
        object(stdClass) #1932 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1941 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(0) {}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1836 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
}
array(1) {
    [0] = >
        object(stdClass) #1947 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1917 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1954 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1902 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
}
array(1) {
    [0] = >
        object(stdClass) #1836 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(2) {
    [0] = >
        object(stdClass) #1970 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1842 (1) {
    ["name"]= >
    string(5)
"Beyonce"
}
}
array(0) {}
array(1) {
    [0] = >
        object(stdClass) #1878 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
}
array(2) {
    [0] = >
        object(stdClass) #1802 (1) {
    ["name"]= >
        string(5)
    "Beyonce"
}
[1] = >
    object(stdClass) #1969 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1961 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(2) {
    [0] = >
        object(stdClass) #1836 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
[1] = >
    object(stdClass) #1970 (1) {
    ["name"]= >
    string(5)
"Beyonce"
}
}
array(1) {
    [0] = >
        object(stdClass) #1902 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
}
array(1) {
    [0] = >
        object(stdClass) #1979 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1860 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(1) {
    [0] = >
        object(stdClass) #1946 (1) {
    ["name"]= >
        string(6)
    "Madonna"
}
}
array(3) {
    [0] = >
        object(stdClass) #1926 (1) {
    ["name"]= >
        string(10)
    "Lady Gaga"
}
[1] = >
    object(stdClass) #1848 (1) {
    ["name"]= >
    string(5)
"Beyonce"
}
[2] = >
    object(stdClass) #1912 (1) {
    ["name"]= >
    string(6)
"Madonna"
}
}
array(0) {}

我相信我会无缘无故地感到困惑,但我被困住了。

【问题讨论】:

  • 注意 SQL 注入。如果有多个结果,查询是否会返回一个数组?
  • 我没有完全理解,但是 php (implode) 或 mysql (group concat) 会帮助你。
  • @MattWhipple :是的,它会返回数组(一些为空)。不过,问题不是查询,我试图通过 foreach 获取字符串中的结果,但我每次只能返回一个结果,而应该有更多结果。谢谢。

标签: php mysql arrays oop multidimensional-array


【解决方案1】:

我认为问题出在这里:

foreach($array as $single) {
    $array = $single->name . ',';
}

$array 只是第一次执行循环时的一个数组,因为在循环内部您为它分配了一个新值。

试试这个:

$names = array();
foreach ($array as $single) {
    $names[] = $single->name;
}
echo implode(', ', $names);

【讨论】:

  • 谢谢@Dale,你是个聪明人。我很惊讶你完全理解我的胡言乱语。这行得通。
【解决方案2】:

我同意 Dale,因为在您的示例中,您将始终获得一个名称(例如,数据库中的最后一个名称),因此您应该在循环时将其放在不同的数组中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2015-01-18
    • 2018-09-12
    • 2013-02-10
    • 2017-03-04
    • 2021-08-26
    • 1970-01-01
    相关资源
    最近更新 更多