0

So I'm creating a file where users can add their content information for a frontend template. Whatever they type in this php file will show on the site. Sort of have two issues:

  1. I need to be able to create a nested array and be able to call all or just one of the nested array elements.
  2. How do I call a variable from the setup function to PHPmailer: $mail->Username and $mail->Password

Here is what I have that works so far:

function setup() {
    return array(
        'firstname' => "Your first name",
        'lastname' => "Your last name"
    );
}

extract (setup ());

Then I can call any element from the array into the HTML

<?php echo $firstname; ?>

Here's what I'd like to do:

function setup() {
    return array(
        'firstname' => "Your first name",
        'lastname' => "Your last name",
        /**
         * Would like a nested array but need to be able to call "nested" or any value within individually, anywhere in my html.
         */
        $nested = array(
            $set1 = array(
                "value1",
                "value2",
                "value3",
            ),
            $set2 = array(
                "value4",
                "value5",
                "value6",
            )
        ),
        /** 
         * I need the 'mail' and 'mailpass' to link to $mail->Username and $mail->Password
         * */ 
        'mail' => "[email protected]",
        'mailpass' => "password"
    );
}

extract (setup ());

Then call it, something like this:

<div>
  <h1><?php echo $nested[0][1]; ?></h1>
  <ul>
    <li><?php echo $nested[1][2]; ?></li>
    <li><?php echo $nested[1][2]; ?></li>
  </ul>
  <div>
    <?php echo $nested[$set1]; ?>
  </div>
  <div>
    <?php echo $nested[$set2]; ?>
  </div>
</div>

And have PHPmailer do this:

if ( array_key_exists( 'email', $_POST ) ) {
    //From this
    ..
    $mail->Username = '[email protected]';
    // SMTP password
    $mail->Password = 'password';
    ..
    //To Something like this
    ..
    $mail->Username = $mail; // This is the variable from the setup function
    // SMTP password
    $mail->Password = $mailpass; // This is the variable from the setup function
    ..
}

Are loops required for these 2 issues? If so, how would I go about this? Thanks in advance

UPDATE #1 / PARTIAL SOLUTION

Turns out, I DO need a loop. Took me a while to figure out but I needed multiple values, that would generate multiple list items.

In this case an associative array and a foreach key loop is needed. Let's create a new function:

function associativeArray() {

    // Create the associative array
    $associativeArray = array(
        'Key name a' => array(
            'job' => 'Front End Dev',
            'name' => 'Dave'
        ),
        'Key name b' => array(
            'job' => 'Back End Dev',
            'name' => 'Paul'
        ),
        'Key name c' => array(
            'job' => 'Full Stack Dev',
            'name' => 'James'
        ),
        'Key name d' => array(
            'job' => 'Stackoverflow Dev',
            'name' => '( ͡° ͜ʖ ͡°)'
        ),
    );

    // loop the associative array to display key & values
    foreach($associativeArray as $key => $array) {
        /**
         * Call the $key value(in this case it's a title), next..
         * we'll access the $key's index elements with $array['indexname']
         */
    echo
        '<li>
            <h3>'.$key.'</h3>
            <h6>'.$array['job'].'</h6>
            <p>'.$array['name'].'</p>
        </li>
        ';
    }
}

Next, call the function where ever needed. This is going in an unordered list:

<ul><?php echo associativeArray(); ?></ul>

Finally, the output:

<ul>
  <li>
    <h3>Key name a</h3>
    <h6>Front End Dev</h6>
    <p>Dave</p>
  </li>
  <li>
    <h3>Key name b</h3>
    <h6>Back End Dev</h6>
    <p>Paul</p>
  </li>
  <li>
    <h3>Key name c</h3>
    <h6>Full Stack Dev</h6>
    <p>James</p>
  </li>
  <li>
    <h3>Key name d</h3>
    <h6>Stackoverflow Dev</h6>
    <p>( ͡° ͜ʖ ͡°)</p>
  </li>
</ul>
3
  • How do you create the array $nested Commented Jun 26, 2021 at 19:58
  • The $nested could be called 'nested' but I'm really not sure how to do this. It's based off of the very last answer from here: stackoverflow.com/questions/9069201/… Commented Jun 26, 2021 at 20:02
  • @endeavour Also updated with a solution, I went about it wrongly at first. Still stumped on the PHP mailer issue though Commented Jun 29, 2021 at 22:05

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.