我有以下从 msqli 查询生成的数组。
Array
(
[0] => 21
[1] => AAAAA
[2] => BBBBB
[3] => 1234567
[4] => aaa
[5] => bbb
[6] => ccc
[7] => ddd
[8] => 2015-01-19 03:31:33
[9] => 1
[10] => 5
[11] => 5, - not set -;9, - not set -;10, - not set -;11, - not set -;14, - not set -;19, 12;20, mm_cb_on;21, - not set -;27, Noe;28, Pena;62, mm_cb_off
)
Array
(
[0] => 22
[1] => AAAAA
[2] => BBBBB
[3] => 1234567
[4] => aaa
[5] => bbb
[6] => ccc
[7] => ddd
[8] => 2015-01-19 03:31:33
[9] => 1
[10] => 6
[11] => 5, - not set -;9, - not set -;10, - not set -;11, - not set -;14, - not set -;20, mm_cb_on;21, - not set -;
)
Array
(
[0] => 23
[1] => AAAAA
[2] => BBBBB
[3] => 1234567
[4] => aaa
[5] => bbb
[6] => ccc
[7] => ddd
[8] => 2015-01-19 03:31:33
[9] => 1
[10] => 7
[11] => 5, - not set -;11, - not set -;14, - not set -;19, 23;20, mm_cb_on;21, - not set -;27, Noe;28, Pena;62, mm_cb_off
)
我像这样循环访问这些数据:
while ($row = mysqli_fetch_array($data)) {
echo "<td nowrap>" .$row{'first_name'}. "</td>
<td nowrap>" .$row{'last_name'}. "</td>
.......";
}
当我到达数组中的最后一个键时,我将循环遍历该数据,并像这样爆炸:
while ($row = mysqli_fetch_array($data)) {
echo "<td nowrap>" .$row{'first_name'}. "</td>
<td nowrap>" .$row{'last_name'}. "</td>
.......";
$custom_fields = $row[11];
$fields = explode(";", $custom_fields);
foreach ($fields as $keys) {
$key = explode(',', $keys);
var_dump($key);
}
}
该 var 转储生成以下数组结构(对于前一个数组中的第一个键):
Array
(
[0] => 5
[1] => - not set -
)
Array
(
[0] => 9
[1] => - not set -
)
Array
(
[0] => 10
[1] => - not set -
)
Array
(
[0] => 11
[1] => - not set -
)
Array
(
[0] => 14
[1] => - not set -
)
Array
(
[0] => 19
[1] => 12
)
Array
(
[0] => 20
[1] => mm_cb_on
)
Array
(
[0] => 21
[1] => - not set -
)
Array
(
[0] => 27
[1] => Noe
)
Array
(
[0] => 28
[1] => Pena
)
Array
(
[0] => 62
[1] => mm_cb_off
)
我正在尝试创建像这样的条件:
if (isset($key[0]) && $key[0] == 19) { // this produce none for every row
$prov_id = $key[1];
} else {
$prov_id = 'None';
}
if ($key[0] == 27) {
$fm2_fname = $key[1];
} else {
$fm2_fname = '';
}
if ($key[0] == 28) {
$fm2_lname = $key[1];
} else {
$fm2_lname = '';
}
我遇到的问题是在循环中某些项目没有 $key[0] == "19"
...我将如何在 foreach 循环中处理这个问题?非常感谢任何帮助。
最佳答案
if (isset($key[0]) && $key[0] == 19) { // this produce none for every row
$prov_id = $key[1];
} else {
$prov_id = 'None';
}
if ($key[0] == 27) {
$fm2_fname = $key[1];
} else {
$fm2_fname = '';
}
if ($key[0] == 28) {
$fm2_lname = $key[1];
} else {
$fm2_lname = '';
}
因为每个语句都有一个 else,该值将在循环时设置,因此在您的情况下,它将变量设置为 $ 后将其设置为
。'None'
键[1]
而是去掉 } else {
并将变量更改为以下内容,以便每一行都有自己的值:
$row['prov_id']
$row['fm2_fname']
$row['fm2_lname']
所以现在最终的代码将是这样的:
if ($key[0] == 19)
$row['prov_id'] = $key[1];
if ($key[0] == 27)
$row['fm2_fname'] = $key[1];
if ($key[0] == 28)
$row['fm2_lname'] = $key[1];
在 foreach 循环之外对每个变量执行此操作
if (!isset($row['prov_id'])) $row['prov_id'] = '';
关于php - 如何处理 while 循环内的 foreach 中的空数组键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31928711/