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:
- I need to be able to create a nested array and be able to call all or just one of the nested array elements.
- 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>
$nested