php - PHP 从键中查找值
问题描述
所以,我试图了解我该怎么做。我很难受。
$arrayChart = array(
array(
"Name" => "Mike",
"ID" => "0001234",
"Hours" => 38
),
array(
"Name" => "Miles",
"ID" => "0005678",
"Hours" => 42
)
);
我希望能够从键值中找到小时数(整数)。问题是我想根据名字的第一个字母找到它。这意味着如果我有“M”,每个以“M”开头的名字我都应该输出他们一周的工作时间并将它们加在一起。
所以,我得到了“M”,我必须从中找到他们的工作时间并添加它们。我怎样才能做到这一点?我尝试使用此功能,但它甚至没有做任何事情。
$name = "M";
foreach($arrayChart as $key){
if($key["Name"] == $name){
$hours = $key["Hours"];
break;
}
}
print_r($hours);
解决方案
获取 的第一个字符,$key['Name']
然后将其与变量 进行比较$name
。如果有匹配项,则添加$key['Hours']
到变量中。继续对 arrayChart 中的每个项目执行此操作。
$name = "M";
$hours = 0;
foreach($arrayChart as $key){
if ($key['Name'][0] === $name) {
$hours += $key["Hours"];
}
}
print_r($hours);
示例:https ://rextester.com/VFPH10481
还要看看这个问题:Getting the first character of a string with $str[0]
编辑
如果$name = "Mike"
是要求,您可以这样做:
$name = 'M';
$hours = 0;
foreach($arrayChart as $key){
$foundAtPosition = strpos($key['Name'], $name);
if ($foundAtPosition === false ||
$foundAtPosition > 0) {
continue;
}
$hours += $key["Hours"];
}
print_r($hours);
示例:https ://rextester.com/ZHCG76001
说明:查看strpos函数的手册。使用该功能,您可以$name
在$key['Name']
. 如果没有找到,strpos 将导致 false。如果找到了,strpos 会告诉你在哪里找到的。
strpos 将显示0
是否$name
出现在开头。使用该逻辑,如果 strpos 的结果为假或大于 0,您可以要求循环跳过。否则,您可以计算小时数。
如果您想要不区分大小写的搜索,请改用stripos函数。
编辑 2
如果您想提取 ID 和小时数,您可以这样做:
$name = 'M';
$hours = 0;
$ids = array();
foreach($arrayChart as $key){
$foundAtPosition = strpos($key['Name'], $name);
if ($foundAtPosition === false ||
$foundAtPosition > 0) {
continue;
}
$hours += $key["Hours"];
$ids[] = $key['ID'];
}
echo $hours . "\n";
echo join(',', $ids) . "\n";
示例:https ://rextester.com/ZRIC46050
说明:我们创建一个名为 的空数组变量$ids
。当我们找到匹配项时,我们将 Mike 或 M(或任何您匹配的对象)的 ID 添加到数组中。$ids[] = 'something'
意味着,something
在 $ids 变量的末尾添加。要将该变量打印为逗号分隔值,请使用该join
函数,该函数在上述代码中使用逗号连接数组的每个项目。
推荐阅读
- deep-learning - 在 onnx-runtime 的帮助下推断 LSTM 模型时出错。无效参数错误
- html - 我可以在浏览器中运行 Go 编译器吗?
- angular - 如果关闭,如何在角材料垫抽屉中隐藏组件
- python - 为什么会出现这个nameError
- bigcommerce - 必须从所有用户的视图中隐藏零件编号和 Sku
- reactjs - 加载 PIXI 纹理,处理失败
- python - 在python中切割window.open的一部分(网页抓取)
- python - Pandas:基于另一列的前一行值的条件累积和
- javascript - 如果我的任务日期是当前的,那么它会在我的今天任务中显示任务
- javascript - 如何在 JavaScript 中通过数组过滤循环