Skip to content

Instantly share code, notes, and snippets.

@dahjelle
Last active November 5, 2023 05:17
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dahjelle/ceedd4881cd21dddb935 to your computer and use it in GitHub Desktop.
Save dahjelle/ceedd4881cd21dddb935 to your computer and use it in GitHub Desktop.
Array Exercises (PHP)

Array Exercises (PHP)

Questions

  1. If you have an array $a = array( 0, 1, 2, 3, 4 );, how do you extract the value 3 from the array?

  2. If you have an array $a = array( "zero"=>0, "one"=>1, "two"=>2, "three"=>3, "four"=>4 );, how do you extract the value 3 from the array?

  3. If you have the following array, how do you extract the value 3 from the array?

    $a = array(
        array(
            0,
            1
        ),
        array(
            2,
            array(
                3
            )
        )
    );
    
  4. If you have the following array, how do you extract the value 3 from the array?

    $a = array(
        "a"=>array(
            "b"=>0,
            "c=>1
        ),
        "b"=>array(
            "e"=>2,
            "o"=>array(
                "b"=>3
            )
        )
    );
    
  5. Create a new array with each comma-separated value as its own array element from the string $a = "a,b,c,d,e,f".

  6. With the result array from 5, create a new array where each element is both key and value. In other words, the result should be:

    array(
        "a"=>"a",
        "b"=>"b",
        "c"=>"c",
        "d"=>"d",
        "e"=>"e"
    )
    
  7. You have two arrays like the following. One contains field labels, the other contains field values. Write a program to output the third array.

    $keys = array(
        "field1"=>"first",
        "field2"=>"second",
        "field3"=>"third"
    );
    $values = array(
        "field1value"=>"dinosaur",
        "field2value"=>"pig",
        "field3value"=>"platypus"
    );
    // want to output
    $keysAndValues = array(
        "first"=>"dinosaur",
        "second"=>"pig",
        "third"=>"platypus"
    );
    
  8. You have an array of transactions, each of which has a debit and credit amount. Find the absolute value of the transaction amount (i.e. abs( debit - credit )) and add it as a new key=>value pair to each transaction.

    $transactions = array(
        array(
            "debit"=>2,
            "credit"=>3
        ),
        array(
            "debit"=>15,
            "credit"=>14
        )
    );
    // outputs
    $transactions = array(
        array(
            "debit"=>2,
            "credit"=>3,
            "amount"=>1
        ),
        array(
            "debit"=>15,
            "credit"=>14,
            "amount"=>1
        )
    );
    
  9. Find the sum of this array of numbers $a = array( 0, 1, 2, 3, 4, 5, 6 );.

Sample Answers (others may be correct :-D)

  1. $a[ 3 ];

  2. $a[ "three" ];

  3. $a[ 1 ][ 1 ][ 0 ];

  4. $a[ "b" ][ "o" ][ "b" ];

  5. $a = explode( ",", $a );

  6. Samples:

    $new_array = array();
    foreach( $a as $element ) {
        $new_array[ $element ] = $element;
    }
    

    or

    array_combine( $a, $a );

    How would you write your own array_combine function?

  7. Samples:

    // can you spot the bug?
    $keysAndValues = array();
    $keysAndValues[ $keys[ "field1" ] ] = $values[ "field1value" ];
    $keysAndValues[ $keys[ "field2" ] ] = $values[ "field2value" ];
    $keysAndValues[ $keys[ "field3" ] ] = $values[ "field2value" ];
    

    or

    $keysAndValues = array();
    foreach( array( 1, 2, 3 ) as $index ) {
        $keysAndValues[ $keys[ "field$index" ] ] = $values[ "field" . $index . "value" ];
    }
    

    or

    $keysAndValues = array_combine( array_values( $keys ), array_values( $values ) );
    
  8. Samples

    $new_transactions = array();
    foreach( $transactions as $transaction ) {
        $new_transaction = $transaction;
        $new_transaction[ "amount" ] = abs( $transaction[ "debit" ] - $transaction[ "credit" ] );
        $new_transactions[] = $new_transaction;
    }
    $transactions = $new_transactions;
    

    or

    $transactions = array_map( function( $transaction ) {
        $transaction[ "amount" ] = abs( $transaction[ "debit" ] - $transaction[ "credit" ] );
        return $transaction;
    }, $transactions );
    
  9. Samples:

    $sum = 0;
    foreach( $a as $element ) {
        $sum += $element;
    }
    

    or

    $sum = array_reduce( $a, function( $partial_sum, $element ) {
        return $partial_sum + $element;
    }, 0 );
    

    or

    $sum = array_sum( $a );
    
@dahjelle
Copy link
Author

Fixed = that should have been - in sample answers for #8. Thanks, @sajinshrestha!

@Boogyman63
Copy link

where are the answers?

@dahjelle
Copy link
Author

dahjelle commented Mar 5, 2020

where are the answers?

@Boogyman63 The answers should be right inline, starting at Sample Answers. As noted, there are definitely lots of ways to solve most of these questions.

@CH-CHISAKA
Copy link

  1. If you have an array $a = array( 0, 1, 2, 3, 4 );, how do you extract the value 3 from the array?

  2. If you have an array $a = array( "zero"=>0, "one"=>1, "two"=>2, "three"=>3, "four"=>4 );, how do you extract the value 3 from the array?
    <?php
    //Creating an associative array
    $a =array("zero" => "0", "one" => "1", "two" => "2", "three" => "3", "four"=>4);
    echo $a["three"];

     ?>
    
  3. If you have the following array, how do you extract the value 3 from the array?

  1. If you have the following array, how do you extract the value 3 from the array?
array( "b"=>0, "c"=>1 //Fixed the typo here, changed "c=>1" to "c"=>1 ), "b"=>array( "e"=>2, "o"=>array( "b"=>3 ) ) ); echo $a["b"]["o"]["b"]; ?>
  1. Create a new array with each comma-separated value as its own array element from the string $a = "a,b,c,d,e,f".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment