Reputation: 13090
I've two arrays:
$rooms = [1,2,3,4,5,6,7,8,9];
$reserved_rooms = [4, 7];
I would like to print this array like this:
1
2
3
Room 4 is reserved
5
6
Room 7 is reserved
Her is my code:
$rooms = [1,2,3,4,5,6,7,8,9];
$reserved_rooms = [4, 7];
foreach($rooms as $key=>$val){
foreach($reserved_rooms as $val2){
if($val == $val2){
echo $val2." room is reserved";
}
else
echo $val."<br>";
}
}
The result is:
1
1
2
2
3
3
4 room is reserved4
5
5
6
6
7
7 room is reserved8
8
9
9
Upvotes: 1
Views: 996
Reputation: 12785
In case you do not want to use in_array()
function :
$rooms = [1,2,3,4,5,6,7,8,9];
$reserved_rooms = [4, 7];
array_map(function ($room) use ($reserved_rooms) {
foreach($reserved_rooms as $reserved_room) {
if ($reserved_room == $room) {
print "Room $room is reserved\n";
return;
}
}
print "$room\n";
}, $rooms);
Upvotes: 1
Reputation: 97
$rooms = [1,2,3,4,5,6,7,8,9];
$reserved_rooms = [4, 7];
foreach($rooms as $key=>$val){
$flag = false;
foreach($reserved_rooms as $val2){
if($val == $val2){
echo "Room ".$val2." is reserved<br />";
$flag=true;
break;
}
}
if($flag == false){
echo $val."<br />";
}
}
Upvotes: 0
Reputation: 36944
You need to move your echo
outside the loop.
$rooms = [1,2,3,4,5,6,7,8,9];
$reserved_rooms = [4, 7];
foreach($rooms as $key=>$val){
$isReserved = false; // add this
foreach($reserved_rooms as $val2){
if($val == $val2){
$isReserved = true;
break; // is reserved, no need to check the other values
}
}
if ($isReserved) { // now decide whether it is reserved or not
echo $val." room is reserved";
} else {
echo $val."<br>";
}
}
Upvotes: 4
Reputation: 955
You should try this:
foreach($rooms as $key=>$val){
if(in_array($val, $reserved_rooms){
echo $val." room is reserved";
}else{
echo $val
}
}
Upvotes: 0
Reputation: 11375
Use in_array()
to check if a value exists in the array.
foreach($rooms as $room) {
if( in_array($room, $reserved_rooms) ) {
echo $room .' is reserved.' . PHP_EOL;
continue;
}
echo $room . PHP_EOL;
}
Upvotes: 3