Table of Contents
Reply to discussion (solution)
Home Backend Development PHP Tutorial I would like to ask for advice on adding elements to a two-dimensional array.

I would like to ask for advice on adding elements to a two-dimensional array.

Jun 27, 2016 pm 01:18 PM

<?php        while(mysql_fetch_array){                $arr[$key][] = array("value"=>$value);                if($somecondition){                        foreach($arr as $k => $v){                                $arr[$k][] = array("value"=>"");                        }                }        }?>
Copy after login


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"=>"");                                                 }                                 }                 }   ?>
Copy after login


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"=>"");  }}
Copy after login

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.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

How does session hijacking work and how can you mitigate it in PHP? How does session hijacking work and how can you mitigate it in PHP? Apr 06, 2025 am 12:02 AM

Session hijacking can be achieved through the following steps: 1. Obtain the session ID, 2. Use the session ID, 3. Keep the session active. The methods to prevent session hijacking in PHP include: 1. Use the session_regenerate_id() function to regenerate the session ID, 2. Store session data through the database, 3. Ensure that all session data is transmitted through HTTPS.

What are Enumerations (Enums) in PHP 8.1? What are Enumerations (Enums) in PHP 8.1? Apr 03, 2025 am 12:05 AM

The enumeration function in PHP8.1 enhances the clarity and type safety of the code by defining named constants. 1) Enumerations can be integers, strings or objects, improving code readability and type safety. 2) Enumeration is based on class and supports object-oriented features such as traversal and reflection. 3) Enumeration can be used for comparison and assignment to ensure type safety. 4) Enumeration supports adding methods to implement complex logic. 5) Strict type checking and error handling can avoid common errors. 6) Enumeration reduces magic value and improves maintainability, but pay attention to performance optimization.

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

How to send a POST request containing JSON data using PHP's cURL library? How to send a POST request containing JSON data using PHP's cURL library? Apr 01, 2025 pm 03:12 PM

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

See all articles