Php 如何根据需要显示数组的值?
我的代码如下:Php 如何根据需要显示数组的值?,php,arrays,Php,Arrays,我的代码如下: <?php $data1 = array(1, 2, 3, 4, 5); $data2 = array( array('id' => 1, 'name' => 'chelsea.jpg'), array('id' => 2, 'name' => 'mu.jpg'), ); foreach ($data1 as $key1 => $v
<?php
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
foreach ($data1 as $key1 => $value1) {
foreach ($data2 as $key2 => $value2) {
if($value1 == $value2['id'])
echo $value2['name'].'<br>';
else
echo 'No data'.'<br>';
}
}
?>
如果代码运行,结果如下所示:
chelsea.jpg
没有数据
没有数据
mu.jpg
没有数据
没有数据
没有数据
没有数据
没有数据
没有数据
这是假的
我想要这样的结果:
chelsea.jpg
mu.jpg
没有数据
没有数据
没有数据
我该怎么做呢?可能会有帮助
<?php
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
foreach ($data1 as $key1 => $value1) {
foreach ($data2 as $key2 => $value2) {
if($value1 == $value2['id'])
echo $value2['name'] . "<br/>";
else
$new_array[] = 'No data';
}
}
echo implode("\n", $new_array);
?>
试试这个
<?php
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
$isFound = false;
foreach ($data1 as $key1 => $value1) {
foreach ($data2 as $key2 => $value2) {
if($value1 == $value2['id']){
echo $value2['name'].'<br>';
$isFound = true;
}
}
if(!$isFound){
echo "no data";
$isFound = false;
}
}
?>
您可以使用in_arrayphp函数来完成此操作 使用以下命令:-
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
foreach ($data2 as $key2 => $value2) {
if(in_array($value2['id'],$data1))
echo $value2['name'].'<br>';
else
echo 'No data'.'<br>';
}
$data1=数组(1,2,3,4,5);
$data2=数组(
数组('id'=>1,'name'=>chelsea.jpg'),
数组('id'=>2,'name'=>'mu.jpg'),
);
foreach($data2作为$key2=>$value2){
if(在数组中($value2['id',$data1))
echo$value2['name']。
;
其他的
回显“无数据”。
;
}
它将给出如下输出:
已修改:-
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
foreach ($data1 as $key1 => $value1) {
$name='No data';
foreach ($data2 as $key2 => $value2) {
if($value1 == $value2['id'])
$name= $value2['name'];
}
echo $name.'<br>';
}
$data1=数组(1,2,3,4,5);
$data2=数组(
数组('id'=>1,'name'=>chelsea.jpg'),
数组('id'=>2,'name'=>'mu.jpg'),
);
foreach($data1作为$key1=>$value1){
$name='无数据';
foreach($data2作为$key2=>$value2){
如果($value1==$value2['id']))
$name=$value2['name'];
}
回显$name。“
”;
}
它的输出为
您可以转换第二个数组,使其由id列设置关键字。这允许您执行isset而不是任何其他类型的查找
<?php
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
$data2 = array_column($data2, null, 'id' );
foreach ($data1 as $key1 => $value1) {
if(isset($data2[$value1]))
echo $data2[$value1]['name'].'<br>';
else
echo 'No data'.'<br>';
}
?>
更新:在考虑了如何最小化代码之后,使用PHP7的null coalesce??接线员
<?php
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
$data2 = array_column($data2, null, 'id' );
foreach ($data1 as $value1) {
echo $data2[$value1]['name']??'No data'.'.<br>';
}
?>
找到id时使用:
$data1 = array(1, 2, 3, 4, 5);
$data2 = array(
array('id' => 1, 'name' => 'chelsea.jpg'),
array('id' => 2, 'name' => 'mu.jpg'),
);
foreach ($data1 as $key1 => $value1) {
foreach ($data2 as $key2 => $value2) {
if($value1 == $value2['id']) {
echo $value2['name'],"\n";
continue 2;
}
}
echo "No data\n";
}
输出:
chelsea.jpg
mu.jpg
No data
No data
No data
将值存储在数组中并对其进行排序。很抱歉,不清楚您实际想要做什么,或者您想要创建的结果实际上是如何实现的。我无法立即解释导致该结果的任何逻辑。IMHO$isFound标志在没有充分理由的情况下增加了太多的复杂性。否则将是更好的选择。您需要输入$isFound=false代码>在外部循环内,以便您可以重置每个循环的标志,如果不重置,则标志在第一次发生后将始终为真。仍然不是期望的结果,您需要将$isFound=false代码>就在外循环的后面foreach($data1作为$key1=>$value1){
看到这个演示很聪明,但是主要的源代码是$data1对$data2,所以我认为count$data1很重要。但是这里都有,所以OP可以这样做。这并没有给出预期的结果。对于一小组值来说很好,但不能真正扩展。