在 PHP 的关联数组中显示重复键
Showing duplicate keys in associative array in PHP
我有一个数字数组:
[注意:$arrNum 是动态的。它是使用 rand() 创建的。所以每次的值都会不同。它不是固定值。]
$arrNum = [2, 5, 6, 6, 8];
现在将有一个名为 $arrNumDouble 的关联数组。 $arrNumDouble的key是$arrNum的值,key对应的value是key的double
$arrNumDouble = [];
for ($i=0; $i < sizeof($arrNum); $i++) {
if (array_key_exists($arrNum[$i], $arrNumDouble)) {
//repeated values in the $arrNum array, the
//key in the $arrNumDouble array is
//supplemented with a letter, e.g. “A”
$arrNumDouble[$arrNum[$i]."A"] = $arrNum[$i] * 2;
} else {
$arrNumDouble[$arrNum[$i]] = $arrNum[$i] * 2;
}
};
现在 $arrNumDouble 变为:
$arrNumDouble = array
(
[2] => 4,
[5] => 10,
[6] => 12,
[6A] => 12,
[8] => 16
)
从这个 $arrNumDouble 我可以像这样轻松地在屏幕上显示:
<?php foreach($arrNumDouble as $key => $value): ?>
<tr>
<td><?php echo $key; ?></td>
<td><?php echo $value; ?></td>
</tr>
<?php endforeach; ?>
Num Double
2 4
5 10
6 12
6A 12
8 16
但是我怎么能这样显示:
Num Double
2 4
5 10
6 12
6 12 //without letter A
8 16
使用 intVal 删除 A 字符并保留数字:
<?php foreach($arrNumDouble as $key => $value): ?>
<tr>
<td><?php echo intVal($key); ?></td>
<td><?php echo $value; ?></td>
</tr>
<?php endforeach; ?>
您不应为此目的使用关联数组!
然而,最简单的方法是使用 intval(string) PHP 函数将字符串“6A”转换为数字。
整数(“6A”)returns6
您可以将结果存储为数组的数组,方法如下:
<?php
$arrNum = [2, 5, 6, 6, 8];
$arrNumDouble = array_map(
function($el) {
return [$el, 2*$el];
},
$arrNum
);
#var_export($arrNumDouble);
foreach($arrNumDouble as $el) {
echo "2 * $el[0] = $el[1]" . PHP_EOL;
}
我有一个数字数组:
[注意:$arrNum 是动态的。它是使用 rand() 创建的。所以每次的值都会不同。它不是固定值。]
$arrNum = [2, 5, 6, 6, 8];
现在将有一个名为 $arrNumDouble 的关联数组。 $arrNumDouble的key是$arrNum的值,key对应的value是key的double
$arrNumDouble = [];
for ($i=0; $i < sizeof($arrNum); $i++) {
if (array_key_exists($arrNum[$i], $arrNumDouble)) {
//repeated values in the $arrNum array, the
//key in the $arrNumDouble array is
//supplemented with a letter, e.g. “A”
$arrNumDouble[$arrNum[$i]."A"] = $arrNum[$i] * 2;
} else {
$arrNumDouble[$arrNum[$i]] = $arrNum[$i] * 2;
}
};
现在 $arrNumDouble 变为:
$arrNumDouble = array
(
[2] => 4,
[5] => 10,
[6] => 12,
[6A] => 12,
[8] => 16
)
从这个 $arrNumDouble 我可以像这样轻松地在屏幕上显示:
<?php foreach($arrNumDouble as $key => $value): ?>
<tr>
<td><?php echo $key; ?></td>
<td><?php echo $value; ?></td>
</tr>
<?php endforeach; ?>
Num Double
2 4
5 10
6 12
6A 12
8 16
但是我怎么能这样显示:
Num Double
2 4
5 10
6 12
6 12 //without letter A
8 16
使用 intVal 删除 A 字符并保留数字:
<?php foreach($arrNumDouble as $key => $value): ?>
<tr>
<td><?php echo intVal($key); ?></td>
<td><?php echo $value; ?></td>
</tr>
<?php endforeach; ?>
您不应为此目的使用关联数组!
然而,最简单的方法是使用 intval(string) PHP 函数将字符串“6A”转换为数字。
整数(“6A”)returns6
您可以将结果存储为数组的数组,方法如下:
<?php
$arrNum = [2, 5, 6, 6, 8];
$arrNumDouble = array_map(
function($el) {
return [$el, 2*$el];
},
$arrNum
);
#var_export($arrNumDouble);
foreach($arrNumDouble as $el) {
echo "2 * $el[0] = $el[1]" . PHP_EOL;
}