使用 Laravel 8 循环以 gamma 分隔的变量
Loop on a variable delimited with gamma using Laravel 8
我的数据库中有以下形式的值:
["email1@gmail.com","email2@gmail.com"]
我正在使用 laravel,我想循环此变量以获取每个元素,例如获取元素:email1@gmail.com
.
我尝试了以下代码:
我有以下数组:
$emails :
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["email3@gmail.com","email4@gmail.com"]"
]
所以我使用以下代码获取每个元素:
$var = array();
foreach ($emails as $key => $value) {
$var[] = $value;
}
我得到以下结果:
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["email3@gmail.com","email4@gmail.com"]"
]
有什么想法请帮忙
更新
我有以下数组:
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["hajar.boualamia33@gmail.com","guernine.khadija@gmail.com"]"
]
我做了以下方法:
$emailss = collect($emails)->flatten()->all();
dd($emailss);
我得到以下结果:
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["hajar.boualamia33@gmail.com","guernine.khadija@gmail.com"]"
]
更新
哈,棘手的一个。您似乎存储了一个 PHP 表达式(一个数组)。所以为了提取数组,我们需要先评估它们。
试试这个:
$elements = [
"['email1@gmail.com','email2@gmail.com']",
"['email3@gmail.com','email4@gmail.com']",
];
$emails = collect($elements)
->map(function ($element) {
return (eval("return $element = " . $element . ';'));
})
->flatten()
->all();
试试这个:
$elements = [
['email1@gmail.com','email2@gmail.com'],
['email3@gmail.com','email4@gmail.com'],
];
$emails = collect($elements)->flatten()->all();
这会让你:
=> [
"email1@gmail.com",
"email2@gmail.com",
"email3@gmail.com",
"email4@gmail.com",
]
检查此方法on the docs。
我的数据库中有以下形式的值:
["email1@gmail.com","email2@gmail.com"]
我正在使用 laravel,我想循环此变量以获取每个元素,例如获取元素:email1@gmail.com
.
我尝试了以下代码:
我有以下数组:
$emails :
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["email3@gmail.com","email4@gmail.com"]"
]
所以我使用以下代码获取每个元素:
$var = array();
foreach ($emails as $key => $value) {
$var[] = $value;
}
我得到以下结果:
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["email3@gmail.com","email4@gmail.com"]"
]
有什么想法请帮忙
更新
我有以下数组:
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["hajar.boualamia33@gmail.com","guernine.khadija@gmail.com"]"
]
我做了以下方法:
$emailss = collect($emails)->flatten()->all();
dd($emailss);
我得到以下结果:
array:2 [▼
0 => "["email1@gmail.com","email2@gmail.com"]"
1 => "["hajar.boualamia33@gmail.com","guernine.khadija@gmail.com"]"
]
更新
哈,棘手的一个。您似乎存储了一个 PHP 表达式(一个数组)。所以为了提取数组,我们需要先评估它们。
试试这个:
$elements = [
"['email1@gmail.com','email2@gmail.com']",
"['email3@gmail.com','email4@gmail.com']",
];
$emails = collect($elements)
->map(function ($element) {
return (eval("return $element = " . $element . ';'));
})
->flatten()
->all();
试试这个:
$elements = [
['email1@gmail.com','email2@gmail.com'],
['email3@gmail.com','email4@gmail.com'],
];
$emails = collect($elements)->flatten()->all();
这会让你:
=> [
"email1@gmail.com",
"email2@gmail.com",
"email3@gmail.com",
"email4@gmail.com",
]
检查此方法on the docs。