


I would like to ask for advice on adding elements to a two-dimensional array.
<?php while(mysql_fetch_array){ $arr[$key][] = array("value"=>$value); if($somecondition){ foreach($arr as $k => $v){ $arr[$k][] = array("value"=>""); } } }?>
There is a situation where a loop creates a two-dimensional array and adds elements, but when a certain condition $somecondition occurs, a value is added to each $key in the array Empty element.
After adding it, take a look and find that the added empty elements have all moved to the front of the array. Why is this?
How can I add it correctly?
Reply to discussion (solution)
If no key name is specified for the given value, the current largest integer index value is taken, and the new The key name will be this value plus one. If the specified key name already has a value, the value will be overwritten.
At least there is a problem with your description $key and $k are not the same thing
So
$arr[$key][] = array("value"=>$value) ;
and
$arr[$k][] = array("value"=>"");
The assignment locations are different
You'd better post it Example of the format you need
At least there is a problem with your description $key and $k are not the same thing
So
$arr[$key][] = array("value"= >$value);
and
$arr[$k][] = array("value"=>"");
The assignment locations are different
You'd better post an example of the format you need
<?php while(mysql_fetch_array($res1)){ $arr[$key][] = array(); //为了确定每个key在数组的前后顺序 } while(mysql_fetch_array($res1)){ $arr[$key][] = array("value"=>$value); if($somecondition){ foreach($arr as $k => $v){ $arr[$k][] = array("value"=>""); } } } ?>
My whole process is like this.
First determine the order of each key in while(mysql_fetch_array($res1)).
Then add elements to each key in while(mysql_fetch_array($res2)), and when a certain condition is encountered, empty elements are added.
What I get for the array is:
{
key1:[[],{"value":""},{"value":""},{"value":" "},{"value":36.63},{"value":35.97},{"value":32.8},{"value":32.65}
key2:[[],{"value":"" },{"value":""},{"value":""},{"value":36.63},{"value":35.97},{"value":32.8},{"value":32.65 }
}
And the array I originally planned to get is:
{
key1:[{"value":36.63},{"value":35.97},{"value":"" },{"value":""},{"value":""},{"value":32.8},{"value":32.65}
key2:[{"value":36.63},{ "value":35.97},{"value":""},{"value":""},{"value":""},{"value":32.8},{"value":32.65}
}
The extra [] in front of the array does not affect the drawing at present, but it does not match the standard format after all.
At least there is a problem with your description $key and $k are not the same thing
So
$arr[$key][] = array("value"=>$value) ;
and
$arr[$k][] = array("value"=>"");
The location of the assignment is different
You'd better post it Example of the format you need
Or if I want to implement the logic of my LS, how should I do it?
In that case, why don’t you do related queries?
Back to 2L, I printed the name of $k in foreach, which is indeed the same as the $key in the outer while.
Back to 5L, the data inventory contains a number of time points, and each time point has dozens of values corresponding to $key.
What I do now is to query it first, for example Throughout the day, calculate the top 10 total rankings to determine the order of $keys, and then check the assignment again.
If you want to query directly in the database, I am not familiar with the MySQL select command at present, and I am worried that a certain key was in the 10th position at the previous time point, and the 11th position at the next time point, and then it will be The statistics are no longer available.
When querying twice, if the data changes between the two queries, how will you handle it?
For the first time, choose a larger range to calculate the top 10 overall rankings, which can reflect an overall trend to a certain extent. The rankings at those time points in the middle are not the same as the overall rankings, but the general trend is the same, and I Check the historical records.
Then for some reasons, there is no record at certain points in time. I want to insert a null value into each key at this point in time, but I don’t know why the inserted null value ended up in the array. the front. . . .
By the way, if it is a one-dimensional array, I can directly use the arsort function for ranking, but since the json format is fixed, I can only use the two-dimensional one specified by the format.
I kind of understand what you mean
while(mysql_fetch_array){ $arr[$key][] = array("value"=>$value); if($somecondition){ $arr[$key][] = array("value"=>""); }}
I kind of understand what you mean
Python code?123456while(mysql_fetch_array){ $arr[$key][] = array("value"=>$value); if($somecondition){ $arr[ $key][] = array("value"=>""); }}
.
$somecondition is to judge that the time point in mysql_fetch_array is too different from the previous time point. Then I will fill in the time points according to the interval. At this time point, I should fill in null values for all keys, so I use foreach to traverse it again. The result of the supplement is that the filled null values are at the front of the array. .
You should still need foreach. .
The idea should be like this
while(mysql_fetch_array){
if($somecondition){ //If the gap is too big
$arr[$key][] = array("value "=>""); //Insert null values. If there is more than one, use for loop
}
$arr[$key][] = array("value"=>$value); //Add data
}
The idea should be like this
while(mysql_fetch_array){
if($somecondition){ //If the gap is too big
$arr[$key ][] = array("value"=>""); //Insert a null value. If there is more than one, use a for loop
}
$arr[$key][] = array("value "=>$value); //Add data
}
......
I know what is wrong. . The statements queried by my mysql are not in the order of time points, but in the order of keys. . . What a scam. .
Didn’t you check twice?
The first time is arranged in the order of keys
The second time is arranged in the order of time points
The idea should be like this
while(mysql_fetch_array){
if($somecondition) { //If the gap is too big
$arr[$key][] = array("value"=>""); //Insert a null value. If there is more than one, use a for loop
}
$arr[$key][] = array("value"=>$value); //Add data
}
……
Thank you. . In fact, the logic and implementation are correct. It's because I'm not good at mysql, so I wrote the two conditions after group by in reverse order.

Calculating the total number of elements in a PHP multidimensional array can be done using recursive or iterative methods. 1. The recursive method counts by traversing the array and recursively processing nested arrays. 2. The iterative method uses the stack to simulate recursion to avoid depth problems. 3. The array_walk_recursive function can also be implemented, but it requires manual counting.

In PHP, the characteristic of a do-while loop is to ensure that the loop body is executed at least once, and then decide whether to continue the loop based on the conditions. 1) It executes the loop body before conditional checking, suitable for scenarios where operations need to be performed at least once, such as user input verification and menu systems. 2) However, the syntax of the do-while loop can cause confusion among newbies and may add unnecessary performance overhead.

Efficient hashing strings in PHP can use the following methods: 1. Use the md5 function for fast hashing, but is not suitable for password storage. 2. Use the sha256 function to improve security. 3. Use the password_hash function to process passwords to provide the highest security and convenience.

Implementing an array sliding window in PHP can be done by functions slideWindow and slideWindowAverage. 1. Use the slideWindow function to split an array into a fixed-size subarray. 2. Use the slideWindowAverage function to calculate the average value in each window. 3. For real-time data streams, asynchronous processing and outlier detection can be used using ReactPHP.

The __clone method in PHP is used to perform custom operations when object cloning. When cloning an object using the clone keyword, if the object has a __clone method, the method will be automatically called, allowing customized processing during the cloning process, such as resetting the reference type attribute to ensure the independence of the cloned object.

In PHP, goto statements are used to unconditionally jump to specific tags in the program. 1) It can simplify the processing of complex nested loops or conditional statements, but 2) Using goto may make the code difficult to understand and maintain, and 3) It is recommended to give priority to the use of structured control statements. Overall, goto should be used with caution and best practices are followed to ensure the readability and maintainability of the code.

In PHP, data statistics can be achieved by using built-in functions, custom functions, and third-party libraries. 1) Use built-in functions such as array_sum() and count() to perform basic statistics. 2) Write custom functions to calculate complex statistics such as medians. 3) Use the PHP-ML library to perform advanced statistical analysis. Through these methods, data statistics can be performed efficiently.

Yes, anonymous functions in PHP refer to functions without names. They can be passed as parameters to other functions and as return values of functions, making the code more flexible and efficient. When using anonymous functions, you need to pay attention to scope and performance issues.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Mac version
God-level code editing software (SublimeText3)

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
