PHP
  Home arrow PHP arrow An Introduction to Arrays
Dev Articles Forums 
ADO.NET  
Apache  
ASP  
ASP.NET  
C#  
C++  
ColdFusion  
COM/COM+  
Delphi-Kylix  
Design Usability  
Development Cycles  
DHTML  
Embedded Tools  
Flash  
Graphic Design  
HTML  
IIS  
Interviews  
Java  
JavaScript  
MySQL  
Oracle  
Photoshop  
PHP  
Reviews  
Ruby-on-Rails  
SQL  
SQL Server  
Style Sheets  
VB.Net  
Visual Basic  
Web Authoring  
Web Services  
Web Standards  
XML  
Mobile Linux 
App Generation ROI 
IBM® developerWorks 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
PHP

An Introduction to Arrays
By: Eric 'phpfreak' Rosebrock
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 4
    2003-04-18

    Table of Contents:

    Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT


    In this article, Eric will denomonstrate the use of arrays in PHP. This article is mainly for beginner PHP programmers to give them a push in the right direction.

    What is an Array?

    Arrays can most easilly be described as an ordered list. An array is a list of scalar data (If you don't know what a scalar variable is, you should take a look at my first tutorial. Scalar data in arrays are called 'elements'.) that is 'indexed' (so to speek) with numeric or named keys. A 'key' is either a name or a number given to an element in an array as a reference (if a key is numeric, it is called a 'subscript').

    An Example of an Array

    <?php
    $six = 6;
    $arrayname = array("this is an element",5,$six);
    echo $arrayname[0]; //prints: this is an element
    echo $arrayname[1]; //prints: 5
    echo $arrayname[2]; //prints: 6
    ?>

    As you can see, elements in an array can be any type of scalar data (string, integer, double) and can also be other variables. In this example, the 'keys' are numeric (assigned automatically for you), so when echo'ing the elements, you use the array name followed by the subscript ($arrayname[subscript]). Notice that the subscript of the first element is zero? This will always be the case with numeric keys.

    Associative Arrays

    Associative arrays are arrays that use named keys that you assign to them. Lets look at a few examples...

    <?php
    $arrayone = array("key1" => "this is the first element.", "key2" => "this is the second element");
    $arraytwo = array(
        "key3" => "this is the first element of the second array",
        "key4" => "this is the second element of the second array",
    );
    echo $arrayone['key1']; //prints "this is the first element."
    echo $arraytwo['key3']; //prints "this is the first element of the second array"
    echo $arrayone['key2']; //prints "this is the second element"
    echo $arraytwo['key4']; //prints "this is the second element of the second array"
    ?>

    Now we're getting to where you know how to define an array (and an associative array), but you probably don't see how there useful yet. Well think of this, say you have a bakery that sells pies. You have 3 different flavors, and each flavor has a different price. lets make this example in php...

    <?php
    $bakery = array(
        "cherry" => "5.00",
        "apple" => "4.00",
        "other" => "2.00",
    );
    echo "cherry pie costs $bakery['cherry'], apple pie costs $bakery['apple'], and that other pie costs $bakery['other'].";
    ?>

    Ok, you've got an example of how to use arrays (a very basic example, grant me that). But what if you want to give more information on each pie? You now have the cost, but what if you wanted to add the number of pieces you get for that price, and if the pie was sugarless or not? One way is using mutlidimensional arrays.

    Multidimensional Arrays

    Think of multidimensional arrays as simply a list of arrays. This might seem confusing at first, but im sure with a few examples (and a few pies) you will get the big picture. Pick up your fork, its time to eat:

    <?php
    $bakery = array(
    "cherry" => array("5.00","2 pieces","sugar"),
    "apple" => array("4.00","3 pieces","sugar"),
    "other" => array("2.00","1 piece","sugar-free"),
    );
    echo "cherry pie costs ".$bakery['cherry'][0].", and you get ".$bakery['cherry'][1].".";
    //prints "cherry pie costs 5.00, and you get 2 pieces."
    echo "apple pie costs ".$bakery['apple'][0].", and you get ".$bakery['apple'][1].".";
    //prints "apple pie costs 4.00, and you get 3 pieces."
    echo "the other pie costs ".$bakery['other'][0].", but its ".$bakery['other'][2].".";
    //prints "the other pie costs 2.00, but its sugar-free.
    ?>

    Hopefully now you will be prepared to use arrays when you begin querying mysql databases, and performing other forms of intermediate to advanced data manipulation. If you've noticed, this 'tutorial' wasn't really a tutorial. I'm only trying to give you the basic idea of how to define and use these arrays, not give you all the information a person could possibly fathom. Hey, that might explain the whole "Introduction" word in the title.

    Related Functions

    array_change_key_case -- Returns an array with all string keys lowercased or uppercased
    array_chunk -- Split an array into chunks
    array_count_values -- Counts all the values of an array
    array_diff_assoc -- Computes the difference of arrays with additional index check
    array_diff -- Computes the difference of arrays
    array_fill -- Fill an array with values
    array_filter -- Filters elements of an array using a callback function
    array_flip -- Flip all the values of an array
    array_intersect_assoc -- Computes the intersection of arrays with additional index check
    array_intersect -- Computes the intersection of arrays
    array_key_exists -- Checks if the given key or index exists in the array
    array_keys -- Return all the keys of an array
    array_map -- Applies the callback to the elements of the given arrays
    array_merge_recursive -- Merge two or more arrays recursively
    array_merge -- Merge two or more arrays
    array_multisort -- Sort multiple or multi-dimensional arrays
    array_pad -- Pad array to the specified length with a value
    array_pop -- Pop the element off the end of array
    array_push -- Push one or more elements onto the end of array
    array_rand -- Pick one or more random entries out of an array
    array_reduce -- Iteratively reduce the array to a single value using a callback function
    array_reverse -- Return an array with elements in reverse order
    array_search -- Searches the array for a given value and returns the corresponding key if successful
    array_shift -- Shift an element off the beginning of array
    array_slice -- Extract a slice of the array
    array_splice -- Remove a portion of the array and replace it with something else
    array_sum -- Calculate the sum of values in an array.
    array_unique -- Removes duplicate values from an array
    array_unshift -- Prepend one or more elements to the beginning of array
    array_values -- Return all the values of an array
    array_walk -- Apply a user function to every member of an array
    array -- Create an array
    arsort -- Sort an array in reverse order and maintain index association
    asort -- Sort an array and maintain index association
    compact -- Create array containing variables and their values
    count -- Count elements in a variable
    current -- Return the current element in an array
    each -- Return the current key and value pair from an array and advance the array cursor
    end -- Set the internal pointer of an array to its last element
    extract -- Import variables into the current symbol table from an array
    in_array -- Return TRUE if a value exists in an array
    key -- Fetch a key from an associative array
    krsort -- Sort an array by key in reverse order
    ksort -- Sort an array by key
    list -- Assign variables as if they were an array
    natcasesort -- Sort an array using a case insensitive "natural order" algorithm
    natsort -- Sort an array using a "natural order" algorithm
    next -- Advance the internal array pointer of an array
    pos -- Get the current element from an array
    prev -- Rewind the internal array pointer
    range -- Create an array containing a range of elements
    reset -- Set the internal pointer of an array to its first element
    rsort -- Sort an array in reverse order
    shuffle -- Shuffle an array
    sizeof -- Get the number of elements in variable
    sort -- Sort an array
    uasort -- Sort an array with a user-defined comparison function and maintain index association
    uksort -- Sort an array by keys using a user-defined comparison function
    usort -- Sort an array by values using a user-defined comparison function


    DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware.

    More PHP Articles
    More By Eric 'phpfreak' Rosebrock

     

    IBM® developerWorks developerWorks - FREE Tools!


    NEW! Best Practices: The Integrated Project and Portfolio Management Platform.

    Hear how IBM Rational Project and Portfolio Management integrated solutions help teams put the right tools and processes in place to maximize the effectiveness and efficiency of project teams and ensure that the business vision is being executed correctly. Learn how to automate and integrate requirements prioritization, top-down project planning, communications and controls, and methodology deployment to keep your scope, costs, and schedules under control. Tackle with an end-to-end approach the management of scope and scope changes, usage of methodology to control and empower project teams, and optimization of resources to align activity costs with the overall project plan.
    FREE! Go There Now!


    NEW! Calling all CC Power Users – and those that would like to be!

    Join this Rational Talks to You teleconference, featuring Paul Boustany and Mark Krasovich, to speak to the experts about becoming a Rational ClearCase power user. Get a chance to ask your questions and learn tips and tricks for using Rational ClearCase in Agile development
    FREE! Go There Now!


    NEW! Did you say mainframe? e-kit

    Learn how you can extend modern application lifecycle management to IBM System z through the IBM Rational Software Delivery Platform (SDP). The Did you say mainframe? e-kit includes podcasts, webcasts, tutorials, white and red papers, demos, and articles designed to help ease the challenges of modernizing your enterprise. This complimentary kit for mainframe developers is a practical, how-to guide for making the most of an existing development environment, including the skills and infrastructure already in place at an established enterprise.
    FREE! Go There Now!


    NEW! Discovering the value of WebSphere Process Server

    WebSphere Process Server delivers a unique integration framework that simplifies existing IT resources. Often, as IT assets grow to support business demand, so too does their complexity and manageability. In this webcast, we’ll discuss how WebSphere Process Server helps deliver an SOA infrastructure that provides a common model to orchestrate, mediate, connect, map, and execute the underlying IT functions. Discover how WebSphere Process Server simplifies integration of business processes by leveraging existing IT assets as reusable services without the complexities of traditional integration methodologies.
    FREE! Go There Now!


    NEW! Harnessing the power of SQL and Java for high performance data access

    Join this webcast to see how IBM Data Studio Developer and pureQuery can take the pain out of Java data access. uApplications developed using both Java and SQL have become a common requirement. Database connectivity using Java Database Connectivity (JDBC) to create an application is a multi-step tedious process, and tooling that covers both SQL and Java has been unavailable, until now. IBM Data Studio introduces the pureQuery platform: a high-performance, Java data access platform focused on simplifying the tasks of developing, managing, and optimizing database applications and services.
    FREE! Go There Now!


    NEW! Improve your build process with IBM Rational Build Forge, Part 1: Create a continuous build and integration environment

    Learn how to implement a build management system that uses and extends your existing automation technologies. This tutorial shows, step-by-step, how to install and configure IBM Rational Build Forge to manage builds for Jakarta Tomcat from source code.
    FREE! Go There Now!


    NEW! Info 2.0: Harnessing the power of Web 2.0 and Enterprise Mashups

    Listen to this webcast to get an overview of Info 2.0 and a technical demo of how to quickly build an enterprise mashup. IBM's Info 2.0 technology leverages emerging Web 2.0 technologies such as mashups, feeds, AJAX, and JSON in order to simplify assembly of information using feeds and services. Come learn about the technical elements of Info 2.0 including the Feed Generation framework, Mashup Engine, and mashup assembly components. Learn how to pull information from databases, departmental information, and the Web to create mashups critical to your company’s success. We will also discuss best practices to help you get started.
    FREE! Go There Now!


    NEW! Successful Change and Release Management for .NET

    Join this webcast to discover the key requirements for successful change and release management. Learn how to extend your .NET environment to improve productivity and collaboration, and address core problems afflicting team development. In this webcast, we’ll review typical challenges faced by customers and how to resolve them with the IBM Rational Change and Release Management solution, including Rational ClearCase, Rational ClearQuest and Rational Build Forge. Replay is available for 9 months.
    FREE! Go There Now!


    NEW! Trial download: IBM Lotus Forms V3.0

    Get a free trial download of IBM Lotus Forms V3.0 (formerly Workplace Forms), which provides a zero-footprint eForms solution to help you automate and move forms-based business processes off the desktop and onto the Web. With Lotus Forms, you can extend applications beyond the firewall by creating a single electronic form document ready for use in both thick and Web 2.0 thin client format.
    FREE! Go There Now!


    NEW! Understanding Web application security challenges

    As businesses grow increasingly dependent upon Web applications, these complex entities grow more difficult to secure. Most companies equip their Web sites with firewalls, Secure Sockets Layer (SSL), and network and host security, but the majority of attacks are on applications themselves – and these technologies cannot prevent them. This paper explains what you can do to help protect your organization, and it discusses an approach for improving your organization’s Web application security.
    FREE! Go There Now!



    All FREE IBM® developerWorks Tools!

    PHP ARTICLES

    - Making Usage Statistics in PHP
    - Installing PHP under Windows: Further Config...
    - File Version Management in PHP
    - Statistical View of Data in a Clustered Bar ...
    - Creating a Multi-File Upload Script in PHP
    - Executing Microsoft SQL Server Stored Proced...
    - Code 10x More Efficiently Using Data Access ...
    - A Few Tips for Speeding Up PHP Code
    - The Modular Web Page
    - Quick E-Commerce with PHP and PayPal
    - Regression Testing With JMeter
    - Building an Iterator with PHP
    - PHP Frontend to ImageMagick
    - Using PEAR's mimeDecode Module
    - Incoming Mail and PHP







    © 2003-2010 by Developer Shed. All rights reserved. DS Cluster 7 Hosted by Hostway
    For more Enterprise Application Development news, visit eWeek