获取数组每个元素的前 4 位
Get the first 4 digits of each element of an array
我有一个从 sql 数据库中得到的数组,每个元素都保存为
YYYY-MM-DD。但我只需要每个元素的年份。我当前的代码:
if(isset($_GET['date'])){
$dates= unserialize(urldecode($_GET['date']));
foreach($dates as $i){
$year = substr($i, 0, 4);
}}
print_r($year);
但是当我 运行 代码时它只给我第一个元素的年份
我已经试过了array_slice但是也没用
因为你的 $year
是一个变量所以 $year
的值将在每次迭代时被覆盖 尝试将 $year
定义为 array()
所以每次值都会是添加到新数组索引
$year[] = substr($i, 0, 4);
if(isset($_GET['date'])) {
$dates= unserialize(urldecode($_GET['date']));
$year = array();
foreach($dates as $i) {
$year[] = substr($i, 0, 4);
}
}
print_r($year);
2 个小改动即可解决问题。
如果您想要每个日期的年份,您应该在提取它们时使用它们。例如,您可以将它们放在一个数组中:
$years = array();
if (isset($_GET['date'])) {
$dates= unserialize(urldecode($_GET['date']));
foreach($dates as $i){
$year = (int)substr($i, 0, 4);
if (($year >= 1900) && ($year <= 2050))
$years[] = $year;
}
}
print_r($years);
请注意,您还可以在附加数组 $years
之前测试日期的有效性。当然,您也可以测试生成的数组本身。如果您愿意,也可以在 foreach 循环中使用它们 "on-the-fly"。
但是,您不能为同一个变量重新分配不同的值,并期望它不是最后分配给它的值。
我有一个从 sql 数据库中得到的数组,每个元素都保存为 YYYY-MM-DD。但我只需要每个元素的年份。我当前的代码:
if(isset($_GET['date'])){
$dates= unserialize(urldecode($_GET['date']));
foreach($dates as $i){
$year = substr($i, 0, 4);
}}
print_r($year);
但是当我 运行 代码时它只给我第一个元素的年份
我已经试过了array_slice但是也没用
因为你的 $year
是一个变量所以 $year
的值将在每次迭代时被覆盖 尝试将 $year
定义为 array()
所以每次值都会是添加到新数组索引
$year[] = substr($i, 0, 4);
if(isset($_GET['date'])) {
$dates= unserialize(urldecode($_GET['date']));
$year = array();
foreach($dates as $i) {
$year[] = substr($i, 0, 4);
}
}
print_r($year);
2 个小改动即可解决问题。
如果您想要每个日期的年份,您应该在提取它们时使用它们。例如,您可以将它们放在一个数组中:
$years = array();
if (isset($_GET['date'])) {
$dates= unserialize(urldecode($_GET['date']));
foreach($dates as $i){
$year = (int)substr($i, 0, 4);
if (($year >= 1900) && ($year <= 2050))
$years[] = $year;
}
}
print_r($years);
请注意,您还可以在附加数组 $years
之前测试日期的有效性。当然,您也可以测试生成的数组本身。如果您愿意,也可以在 foreach 循环中使用它们 "on-the-fly"。
但是,您不能为同一个变量重新分配不同的值,并期望它不是最后分配给它的值。