Two arrays in foreach loop
foreach( $codes as $code and $names as $name ) { }
That is not valid.
You probably want something like this...
foreach( $codes as $index => $code ) {
echo '<option value="' . $code . '">' . $names[$index] . '</option>';
}
Alternatively, it'd be much easier to make the codes the key of your $names
array...
$names = array(
'tn' => 'Tunisia',
'us' => 'United States',
...
);
forEach loop through two arrays at the same time in javascript
Use the second parameter forEach
accepts instead, which will be the current index you're iterating over:
n = [1,2,3,5,7,8,9,11,12,13,14,16,17,18,20,21,22];
n.forEach((element, index) => { console.log(element, index);});
How to use multiple arrays in single foreach() loop
assume you have the same number of items in those two arrays.
if you want to use foreach()
, then the arrays need to have the same index:
foreach ($a as $index => $value)
{
echo $a[$index] .' '. $b[$index];
}
if the arrays have numeric index, you can just use for()
:
for ($i = 0; $i < sizeof($a); $i++)
{
echo $a[$i] .' '. $b[$i];
}
foreach loop with two arrays
Use PHP's array_values
function to get both array with same indexing, then do the foreach:
$data = [
"arra1" => array("1" => "orange", "2" => "banana", "3" => "apple"),
"data-array" => array("first" , "second" , "third")
];
$labels = array_values($data["arra1"]);
$values = array_values($data["data-array"]);
foreach($labels as $index => $value) {
$optionValue = $index+1;
echo "<option value={$optionValue} data-value='{$values[$index]}'>{$labels[$index]}</option>";
}
How can I loop through two arrays at once?
Problem
Well the problem is of course your nested foreach loop. Because for each element of your $data1
array you loop through the entire $data2
array (So in total there are $data1
* $data2
iterations).
Solutions
To solve this you have to loop through both arrays at once.
array_map()
method (PHP >=5.3)
You can do this with array_map()
and pass all arrays to it which you want to loop through at the same time.
array_map(function($v1, $v2){
echo $v1 . "<br>";
echo $v2 . "<br><br>";
}, $data1, $data2 /* , Add more arrays if needed manually */);
Note: If the amount of elements are uneven you won't gen any errors, it will just print NULL
(Means you won't see anything)
MultipleIterator
method (PHP >=5.3)
Use a MultipleIterator
and attach as many ArrayIterator
as you need.
$it = new MultipleIterator();
$it->attachIterator(new ArrayIterator($data1));
$it->attachIterator(new ArrayIterator($data2));
//Add more arrays if needed
foreach($it as $a) {
echo $a[0] . "<br>";
echo $a[1] . "<br><br>";
}
Note: If the amount of elements are uneven it will just print all values where both arrays still have values
for loop
method (PHP >=4.3)
Use a for loop with a counter variable, which you can use as key for both arrays.
$keysOne = array_keys($data1);
$keysTwo = array_keys($data2);
$min = min(count($data1), count($data2));
for($i = 0; $i < $min; $i++) {
echo $data1[$keysOne[$i]] . "<br>";
echo $data2[$keysTwo[$i]] . "<br><br>";
}
Note: Using array_keys()
is just so that this also works if the arrays don't have the same keys or are associative. min()
is used to only loop through as many elements as every array has
array_combine()
method (PHP >=5.0)
Or if the arrays only have unique values, you can array_combine()
both arrays, so that $data1
can be accessed as key and $data2
as value.
foreach(array_combine($data1, $data2) as $d1 => $d2) {
echo $d1 . "<br>";
echo $d2 . "<br><br>";
}
Note: The arrays must have the same amount of elements, otherwise array_combine()
will throw an error
call_user_func_array()
method (PHP >=5.6)
If you want to print more than 2 arrays at the same time or just an unknown amount of arrays, you can combine the array_map()
method with a call_user_func_array()
call.
$func = function(...$numbers){
foreach($numbers as $v)
echo $v . "<br>";
echo "<br>";
};
call_user_func_array("array_map", [$func, $data1, $data2]);
Note: Since this kinda uses the array_map()
method, it behaves the same with uneven amount of elements. Also since this method only works for PHP >=5.6 you can just remove the arguments and change out $numbers
with func_get_args()
in the foreach loop and then it also works for PHP >=5.3
Combine 2 Arrays In Foreach in PHP
You don't show what $dogrularVeSiklar
is or where you get it, but as an example; combine into $key => $value
pairs and foreach
exposing the key and value:
$combined = array_combine($digits, $results);
foreach ($combined as $digit => $result) {
echo $digit . '<br>' . $result;
}
How to Count two array in foreach loop
Easiest php way of counting arrays is count($array)
so if you want to make a new array with the 2 array counts you can do it like this:
$counts = [count($array1), count($array2)];
But if you need to count the records in the database, you will need to change the query instead of ->get()
you will need to use ->count()
.
Related Topics
How to Convert Json String to Array
What's Wrong With Using $_Request[]
PHP 7.2 Function Create_Function() Is Deprecated
Reference: Why Are My "Special" Unicode Characters Encoded Weird Using Json_Encode
Continue Processing PHP After Sending Http Response
How to Pad Single-Digit Numbers With a Leading 0
The Plugin Generated X Characters of Unexpected Output During Activation (Wordpress)
How to Create a Comma-separated List from an Array in PHP
Fatal Error: Call to Undefined Function Session_Register()
What Are the Best Practices For Avoiding Xss Attacks in a PHP Site
Sending Email With Gmail Smtp With Codeigniter Email Library
"Fatal Error: Cannot Redeclare ≪Function≫"
Difference Between Http_Host and Server_Name in PHP
What's Better At Freeing Memory With PHP: Unset() or $Var = Null