我正在编写一个循环遍历数组的函数,直到找到基于另一个数组的匹配。但是该值返回null。
我的例子:
public function viewProduct($id)
{
$product = Product::findOrfail($id);
return "
<table class='table table-hover'>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>{$product->id}</td>
<td>{$product->name}</td>
<td>{$product->description}</td>
</tr>
</tbody>
</table>
";
}
有没有想过为什么函数中的值没有被返回来填充变量作为函数的响应?
答案 0 :(得分:1)
这可以通过array_intersect()和array_keys()高效完成。
代码(Demo):
$tmp = ['fff'=>111,'aaa'=>100,'ddd'=>99,'ccc'=>87,'eee'=>45,'bbb'=>3,'ggg'=>1];
$prg = ['bbb','ccc'];
echo "1st Key: ",(sizeof($result=array_intersect(array_keys($tmp),$prg))==0?"Not Found":current($result));
echo "\n\nResult Array: ";
var_export($result);
输出:
1st Key: ccc
Result Array: array (
3 => 'ccc',
5 => 'bbb',
)
或者,如果您想获得第一场比赛的价值:
var_export(current(array_intersect_key($tmp,array_flip($prg))));
// Will ouput: 87
// if no matches, will return FALSE