23
Sat, Nov
1 New Articles

PHP: Variables, Arrays, and Functions, Part 3

Scripting
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

Use the foreach PHP command to get data out of a mult-dimensional array.

 

We're going to do one last piece related to arrays in PHP. Why? Because when you're using PHP to put data out onto a page or read data in from a page, you'll use arrays as the intermediary between your file and your page. Consequently, knowing how to deal with them is very important.

Before we get into the last element of this (using the foreach PHP statement), let's take a moment to review what we've learned so far (part 1 and part 2).

Array BasicsNumeric

Let's re-start at the beginning. There are two kinds of arrays for PHP.

The first is the numeric array, which is just a simple array. It can have x number of values, and each value is subscripted by a number starting with 0 (not 1 like RPG). You define the array just as a variable with the array() declension:

$MyArray = array();

Array BasicsAssociative

The other type of array that we looked at is the associative. This has subscripts, but they're not numbers; rather, they're more of a category. So $MyArray can have subscripts of 'name', 'address 1', 'city', etc. These subscripts are referred to as properties, and the values given to each of these properties are called the values. Here's an example:

$MyArray['name'] = 'William Roberts';

$MyArray['city']     = 'Washington';

It's these associative arrays that we're most interested in because they basically mimic a file structure. Specifically, we're most interested in the two-dimensional (or above) associative arrays; they look like file records, so it's natural to think of them when you're writing or reading data to or from a database.

Retrieving Two-Dimensional Array Data

In the first article, we saw how to put data in a two-dimensional array.

$MyArray = array(array('name'=>'David', 'city'=>'Petosky'),

                     array('name'=>'Dave', 'city'=>'Grand Haven'),

                      array('name'=>'Dave', 'city'=>'Grand Rapids')

                       );

And in the second article, we saw how to mix HTML code and PHP scripts to display both data and text on a web page. The last step in the process is to be able to extract the data from the two-dimensional array and display it on a page.

If we were in RPG dealing with a file, we would do a loop and read through the records, processing each one as we go. Wouldn't it be nice if PHP were as simple? Let's take an example of a situation where we've read a table, we've deposited the row information in a two-dimensional array, and now we want to get that data out and display it on the page.

One way to do that is with a foreach loop like the one below.

foreach ($MyArray as $property=>$value) {

     'php/html code to display data';

}

The foreach, of course, is a looping facility in PHP that we'll use. For more info on it, you can see this or that or the other thing. Basically, it will read through $MyArray, picking up the values for the property part of the associative array. If we use our example from above, the property elements are 'name', 'city', etc. It's not the value of each of these, like 'Dave' or 'Toronto', but rather the field name that we would use for a column header. For example:

foreach ($MyArray as $property=>$value) {

                    echo $value['name'] .;

                    echo $value['city'], "<br />";

               }

Consequently, this code would display the data as shown below. The "<br />" is HTML to move you down to a new line, and the period (.) before the semicolon inserts a space. Also note that the foreach statement doesn't have a semicolon after it. But the executable statements within it do.

David Petosky

Dave   Grand Haven

Dave   Grand Rapids

Sorting Associative Arrays

Of course, many times when you're displaying data, you need to have it in a particular order. Naturally, you can always take care of this by using an indexed file or table, but one of the nice things about arrays in PHP is that you can sort them, much like you can now sort data structures in RPG (if you're on 6.1). There are two basic types of sorts that you can do. What we're going to talk about now is the ability to sort a one-dimensional associative array.

ASORT

The ASORT function will sort things in terms of the value associated with the array. A good example is if you had an array as such and wanted to sort it by population.

$MyArray = array('New York'=>'8,000,000', 'Chicago'=>'4,000,000', 'LA'=>'3,000,000');

asort(&MyArray);

foreach ($MyArray as $property=>$value) {

      echo $property . $value . "<br />";

}

The result will look like this:

3,000,000

8,000,000

9,000,000

KSORT

The KSORT function will sort things in terms of the "key" or as we have called it before, the property.

$MyArray = array('New York'=>'8,000,000', 'Chicago'=>'4,000,000', 'LA'=>'3,000,000');

ksort(&MyArray);

foreach ($MyArray as $value) {

echo $value . "<br />";

}

The result will look like this:

4,000,000

3,000,000

8,000,000

This result is consistent with a listing of Chicago, LA, New York.

Sorting Multi-Dimensional Arrays

We've been talking mostly about multi-dimensional arrays, so let's look at sorting those. It's not as simple as an ASORT or KSORT, but it's not bad. For example, suppose I want to store multiple addresses in my array.

$MyArray = array( array('name'=>'John Smith', 'Address'=>'1304 S St.'),

                                     array('name'=>'Walter Alston', 'Address'=>657 Ventura Blvd'),

                                     array('name'=>'Col. Ruppert', 'Address'=>'1E 161st Street'),

                      array('name'=>'John Smith','Address'=>'6719 Easton Avenue')

                                 );

This sets up a two-dimensional array with columns being 'name' and 'address', and the rows being 0, 1, 2. Accessing this information is easy:

$MyArray (1) ('address') is 657 Ventura Blvd.

To access data from such an array, you'll probably use a foreach loop.

<?php

foreach ($MyArray as $key => $row)   {

      $name[$key]     = $row['name'];

      $Address[$key] = $row['Address'];

}

array_multisort($name, SORT_ASC, $Address, SORT_DESC, $MyArray);

?>

Here, we're sorting the array $MyArray by name first in ascending order and then by $Address in descending order. And the data would look like this:

Col. Ruppert     1E 161st Street

John Smith       6719 Easton Avenue

John Smith      1304 S. St.

Walter Alston 657 Ventura

Summary

And that's about it, boys and girls. There's more we could say, but "the clock on the wall says three o'clock." And we may be done, for awhile, with PHP topics. But there's lots of other interesting stuff to talk about, and we certainly will.

David Shirey

David Shirey is president of Shirey Consulting Services, providing technical and business consulting services for the IBM i world. Among the services provided are IBM i technical support, including application design and programming services, ERP installation and support, and EDI setup and maintenance. With experience in a wide range of industries (food and beverage to electronics to hard manufacturing to drugs--the legal kind--to medical devices to fulfillment houses) and a wide range of business sizes served (from very large, like Fresh Express, to much smaller, like Labconco), SCS has the knowledge and experience to assist with your technical or business issues. You may contact Dave by email at This email address is being protected from spambots. You need JavaScript enabled to view it. or by phone at (616) 304-2466.


MC Press books written by David Shirey available now on the MC Press Bookstore.

21st Century RPG: /Free, ILE, and MVC 21st Century RPG: /Free, ILE, and MVC
Boost your productivity, modernize your applications, and upgrade your skills with these powerful coding methods.
List Price $69.95

Now On Sale

BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$

Book Reviews

Resource Center

  • SB Profound WC 5536 Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application. You can find Part 1 here. In Part 2 of our free Node.js Webinar Series, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Brian will briefly discuss the different tools available, and demonstrate his preferred setup for Node development on IBM i or any platform. Attend this webinar to learn:

  • SB Profound WP 5539More than ever, there is a demand for IT to deliver innovation. Your IBM i has been an essential part of your business operations for years. However, your organization may struggle to maintain the current system and implement new projects. The thousands of customers we've worked with and surveyed state that expectations regarding the digital footprint and vision of the company are not aligned with the current IT environment.

  • SB HelpSystems ROBOT Generic IBM announced the E1080 servers using the latest Power10 processor in September 2021. The most powerful processor from IBM to date, Power10 is designed to handle the demands of doing business in today’s high-tech atmosphere, including running cloud applications, supporting big data, and managing AI workloads. But what does Power10 mean for your data center? In this recorded webinar, IBMers Dan Sundt and Dylan Boday join IBM Power Champion Tom Huntington for a discussion on why Power10 technology is the right strategic investment if you run IBM i, AIX, or Linux. In this action-packed hour, Tom will share trends from the IBM i and AIX user communities while Dan and Dylan dive into the tech specs for key hardware, including:

  • Magic MarkTRY the one package that solves all your document design and printing challenges on all your platforms. Produce bar code labels, electronic forms, ad hoc reports, and RFID tags – without programming! MarkMagic is the only document design and print solution that combines report writing, WYSIWYG label and forms design, and conditional printing in one integrated product. Make sure your data survives when catastrophe hits. Request your trial now!  Request Now.

  • SB HelpSystems ROBOT GenericForms of ransomware has been around for over 30 years, and with more and more organizations suffering attacks each year, it continues to endure. What has made ransomware such a durable threat and what is the best way to combat it? In order to prevent ransomware, organizations must first understand how it works.

  • SB HelpSystems ROBOT GenericIT security is a top priority for businesses around the world, but most IBM i pros don’t know where to begin—and most cybersecurity experts don’t know IBM i. In this session, Robin Tatam explores the business impact of lax IBM i security, the top vulnerabilities putting IBM i at risk, and the steps you can take to protect your organization. If you’re looking to avoid unexpected downtime or corrupted data, you don’t want to miss this session.

  • SB HelpSystems ROBOT GenericCan you trust all of your users all of the time? A typical end user receives 16 malicious emails each month, but only 17 percent of these phishing campaigns are reported to IT. Once an attack is underway, most organizations won’t discover the breach until six months later. A staggering amount of damage can occur in that time. Despite these risks, 93 percent of organizations are leaving their IBM i systems vulnerable to cybercrime. In this on-demand webinar, IBM i security experts Robin Tatam and Sandi Moore will reveal:

  • FORTRA Disaster protection is vital to every business. Yet, it often consists of patched together procedures that are prone to error. From automatic backups to data encryption to media management, Robot automates the routine (yet often complex) tasks of iSeries backup and recovery, saving you time and money and making the process safer and more reliable. Automate your backups with the Robot Backup and Recovery Solution. Key features include:

  • FORTRAManaging messages on your IBM i can be more than a full-time job if you have to do it manually. Messages need a response and resources must be monitored—often over multiple systems and across platforms. How can you be sure you won’t miss important system events? Automate your message center with the Robot Message Management Solution. Key features include:

  • FORTRAThe thought of printing, distributing, and storing iSeries reports manually may reduce you to tears. Paper and labor costs associated with report generation can spiral out of control. Mountains of paper threaten to swamp your files. Robot automates report bursting, distribution, bundling, and archiving, and offers secure, selective online report viewing. Manage your reports with the Robot Report Management Solution. Key features include:

  • FORTRAFor over 30 years, Robot has been a leader in systems management for IBM i. With batch job creation and scheduling at its core, the Robot Job Scheduling Solution reduces the opportunity for human error and helps you maintain service levels, automating even the biggest, most complex runbooks. Manage your job schedule with the Robot Job Scheduling Solution. Key features include:

  • LANSA Business users want new applications now. Market and regulatory pressures require faster application updates and delivery into production. Your IBM i developers may be approaching retirement, and you see no sure way to fill their positions with experienced developers. In addition, you may be caught between maintaining your existing applications and the uncertainty of moving to something new.

  • LANSAWhen it comes to creating your business applications, there are hundreds of coding platforms and programming languages to choose from. These options range from very complex traditional programming languages to Low-Code platforms where sometimes no traditional coding experience is needed. Download our whitepaper, The Power of Writing Code in a Low-Code Solution, and:

  • LANSASupply Chain is becoming increasingly complex and unpredictable. From raw materials for manufacturing to food supply chains, the journey from source to production to delivery to consumers is marred with inefficiencies, manual processes, shortages, recalls, counterfeits, and scandals. In this webinar, we discuss how:

  • The MC Resource Centers bring you the widest selection of white papers, trial software, and on-demand webcasts for you to choose from. >> Review the list of White Papers, Trial Software or On-Demand Webcast at the MC Press Resource Center. >> Add the items to yru Cart and complet he checkout process and submit

  • Profound Logic Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application.

  • SB Profound WC 5536Join us for this hour-long webcast that will explore:

  • Fortra IT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators with intimate knowledge of the operating system and the applications that run on it is small. This begs the question: How will you manage the platform that supports such a big part of your business? This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn: