This is a first time i get this error ,I have array with 5 element, but when i use Foreach, it's only receive last element. I want to get all key in array $datas['datas'].
echo count($datas['datas']);
[![var_dump($datas['datas']);
$test = 0;
foreach ($datas['datas'] as $k => $v);
{
echo $k;
$test++;
}
dd($test)];
You have a incorrect ";" character on line 6:
foreach ($datas['datas'] as $k => $v);
Your code should be:
echo count($datas['datas']);
$test = 0;
foreach ($datas['datas'] as $k => $v)
{
echo $k;
$test++;
}
dd($test);
Because you are not assigning the value to your variable:
Please replace this loop
foreach ($datas\['datas'\] as $k => $v)
{
echo $k;
$test++;
}
dd($test);
By this:
foreach ($datas['datas'] as $k => $v)
{
echo $k;
$test['keys'] = $k;
}
dd($test['keys']); // now your full data will be in test variable
and Try hoe it will work.
Related
$file = file('file.csv');
$counter=0;
foreach($file as $k){
if(preg_match('/"/', $k)==1){
$csv[] = explode(',', $k);
}
foreach($k as $key => $value){
if($value == 'specific value'){
$counter++;
}
}
}
// print_r($csv);
echo $counter;
$k is outputting correctly as an array of comma-separated values; I'm trying to analyze the comma-separated values of each line $k ... getting "Invalid argument supplied for foreach()" error ...
Check, wether $k is an array (is_array($k) and if it is not empty !empty($k) (same as count(arr)>0). Also you should check your CSV-file for errors like blank lines, hidden returns/tabs/etc. .
$file = file('file.csv');
$counter=0;
foreach($file as $k){
if(preg_match('/"/', $k)==1){
$csv[] = explode(',', $k);
}
if (!is_array($k) OR empty($k)) { continue; }
foreach($k as $key => $value){
if($value == 'specific value'){
$counter++;
}
}
}
// print_r($csv);
echo $counter;
Seems to me $k is a string, while $csv is the array you wanna iterate over.
I have a foreach to loop through the data provided by a PDO SQL query:
foreach ($team as $row){
$count++;
$teamNumber = 'team'.$count;
if ($currentScores[0]['team'.$count] == ""){
$red = "red";
}
echo "<strong><font color='".$red."'>".$row['name']."</font></strong>";
echo $currentScores[0]['team'.$count];
if ($count < 2)
echo " vs ";
}
Now, I want to loop again through the $team array but it just returns the last value of the array during the second loop.
I tried the same thing:
foreach ($team as $row) {
.....
.......
}
How could I run again through the array?
Simple enough, just do a foreach loop on $row as you have previously.
foreach($array as $key => $val) {
foreach($val as $a => $b) {
echo $b;
}
}
How to return $value after loop with its returned data ? I think to create array before loop and equal it to $v to use it after loop but it didn't work.
Any idea on how to solve this problem ?
// create array
$v = array();
// start loop
foreach ($this->json_data->locations as $key => $value) {
if ($value->country_name == $data['city']->country_name)
// return $value with data
return $v = $value ;
}
echo $v->country_name
try this:
$v = array();
foreach ($this->json_data->locations as $key => $value) {
if ($value->country_name == $data['city']->country_name)
{
if(!in_array($value,$v))
{
array_push($v,$value);
}
}
}
try this
$v = array();
$i=0;
// start loop
foreach ($this->json_data->locations as $key => $value) {
if ($value->country_name == $data['city']->country_name)
// return $value with data
$i++;
$v[$i] = $value ;
}
//print $v
print_r($v)
If like using 'return' try this.
$v = iLikeUsingReturn($this,$data);
function iLikeUsingReturn($t,$d){
foreach ($t->json_data->locations as $key => $value) {
if ($value->country_name == $d['city']->country_name)
return $value ;
}
return array();
}
I think the following code will helps you.
// create array
$v = array();
// start loop
foreach ($this->json_data->locations as $key => $value) {
if ($value->country_name == $data['city']->country_name)
// return $value with data
array_push($v, $value);
}
return $v;
I have an array in PHP and would like to use foreach to process entries skipping [0], to process [1], [2], etc.
Thank you
you can use array_slice
$array = array(1,2,3);
foreach (array_slice($array,1) as $value ) {
echo $value;
}
If you don't mind losing first element you can use array_shift
array_shift($array);
foreach ( $array as $value ) {
echo $value;
}
Output
23
$i = 0;
foreach ($ar as $value) {
if ($i > 0) {
// code here
}
$i++;
}
You can keep a variable for this:
$firstSkipped = false;
foreach ($arr as $value) {
if (!$firstSkipped) {
$firstSkipped = true;
continue;
}
// code here
}
Or you could just use a regular for loop, setting the beginning counter to 1:
for ($i = 1, $count = count($arr); $i < $count; $i++) {
// code here
}
You can remove the first entry from an array with array_shift.
$array = array("a","b","c");
array_shift($array);
foreach ($array as $values)
{
echo $values; //bc
}
Try this:
$arr = array(0,1,2,3,4,5);
unset($arr[0]);
foreach($arr as $value) {
echo $value;
echo "<br />";
}
This would delete first entry from array, so it would not skip as you asked, but anyway you can try this...
I have several $_POST variables, they are
$_POST['item_number1']
$_POST['item_number2']
and so on
I need to write a loop tha displays the values of all the variables (I don't know how many there are). What would be a simplest way to go about it? Also what would be the simplest way if I do know how many variables I have?
This will echo all POST parameters whose names start with item_number:
foreach($_POST as $k => $v) {
if(strpos($k, 'item_number') === 0) {
echo "$k = $v";
}
}
PHP Manual: foreach(), strpos()
If you know how many do you have:
for ($i=0; $i < $num_of_vars; $i++)
echo $_POST['item_number'.$i]."<br />";
UPDATE:
If not:
foreach($_POST as $k => $v) {
$pos = strpos($k, "item_number");
if($pos === 0)
echo $v."<br />";
}
Gets all POST variables that are like "item_number"
UPD 2: Changed "==" to "===" because of piotrekkr's comment. Thanks
try:
foreach($_POST as $k => $v)
{
if(strpos($k, 'item_number') === 0)
{
echo "$k = $v";
}
}
In the above example, $k will be the array key and $v would be the value.
if you know the number of variables:
<?php
$n = 25; // the max number of variables
$name = 'item_number'; // the name of variables
for ($i = 1; $i <= $n; $i++) {
if (isset($_POST[$name . $i])) {
echo $_POST[$name . $i];
}
}
if you don't know the number:
<?php
$name = 'item_number';
foreach ($_POST as $key) {
if (strpos($key, $name) > 0) {
echo $_POST[$key];
}
}
If you must stick with those variable names like item_numberX
foreach (array_intersect_key($_POST, preg_grep('#^item_number\d+$#D', array_keys($_POST))) as $k => $v) {
echo "$k $v \n";
}
or
foreach (new RegexIterator(new ArrayIterator($_POST), '#^a\d+$#D', null, RegexIterator::USE_KEY) as $k => $v) {
echo "$k $v \n";
}
Better to use php's input variable array feature, if you can control the input names.
<input name="item_number[]">
<input name="item_number[]">
<input name="item_number[]">
then php processes it into an array for you.
print_r($_POST['item_number']);
foreach($_POST as $k => $v) {
if(preg_match("#item_number([0-9]+)#si", $k, $keyMatch)) {
$number = $keyMatch[1];
// ...
}
}
try:
while (list($key,$value) = each($_POST))
${$key} = trim($value);