我有以下数组:
$entrate=Array
(
0 => Array(
'id' => 1,
'nome' => 'Stipendio',
'datamov' => '2023-04-15',
'mese' => 4,
'anno' => 2023,
'total_mov' => 3000.00
),
1 => Array(
'id' => 1,
'nome' => 'Stipendio',
'datamov' => '2023-03-15',
'mese' => 3,
'anno' => 2023,
'total_mov' => 3000.00
),
2 => Array(
'id' => 1,
'nome' => 'Stipendio',
'datamov' => '2023-02-15',
'mese' => 2,
'anno' => 2023,
'total_mov' => 3000.00
),
3 => Array(
'id' => 1,
'nome' => 'Stipendio',
'datamov' => '2023-01-15',
'mese' => 1,
'anno' => 2023,
'total_mov' => 3000.00
)
);
我想通过返回第一级数组的键的datamov值来搜索,所以在查找'2023 - 03 - 15'时,我想返回1作为结果。
我试着这样做:
$anno_start='2023';
$mese_start='01';
$end='2023-12-31';
$datemovs=array_column($entrata, 'datamov');
while (strtotime($anno_start . '-' . $mese_start . '-01') < strtotime($end)) {
$mese_start_num = ltrim($mese_start, '0');
$searched_date=$anno_start.'-'.$mese_start.'-15';
echo 'looking for '.$searched_date;
if($found_key = array_search($searched_date, $datemovs)!==NULL){
echo ' found this key '.$found_key;
$datatrovata = $entrata[$found_key]['datamov'];
echo " that matches $datatrovata \n";
}else{
echo " and I found nothing";
}
$mese_start_num = $mese_start_num + 1;
if ($mese_start_num > 12) {
$anno_start = $anno_start + 1;
$mese_start_num = 1;
$mese_start='01';
}
if($mese_start_num<10){$mese_start='0'.$mese_start_num;}else{$mese_start=$mese_start_num;}
}
但它给了我
查找2023 - 01 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 02 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 03 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 04 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 05 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 06 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 07 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 08 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 09 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 10 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 11 - 15找到了与2023 - 03 - 15匹配的密钥1
查找2023 - 12 - 15找到了与2023 - 03 - 15匹配的密钥1
这显然是错的,我错过了什么
我的目标是
查找2023 - 01 - 15时,找到了与2023 - 01 - 15匹配的密钥3,total_mov为3000
查找2023 - 02 - 15时,找到了与2023 - 02 - 15匹配的密钥2,total_mov为3000
查找2023 - 03 - 15时,找到了与2023 - 03 - 15匹配的密钥1,total_mov为3000
查找2023 - 04 - 15时发现此键0与2023 - 04 - 15匹配,total_mov为3000
查找2023 - 05 - 15,未找到任何内容
查找2023 - 06 - 15,未找到任何内容
查找2023 - 07 - 15,未找到任何内容
查找2023 - 08 - 15,未找到任何内容
查找2023 - 09 - 15,未找到任何内容
查找2023 - 10 - 15,但未找到任何内容
查找2023 - 11 - 15,未找到任何内容
查找2023 - 12 - 15,未找到任何内容
1条答案
按热度按时间tzdcorbm1#
我认为你应该修理这部分:
发送至此:
下面是完整的部分:
因为
array_search
函数返回与搜索值匹配的第一个元素的键,所以它总是返回一个值,即使在数组中找不到该值。