My system sends a configuration array to a function like this:
callThatFunction( array(k1 => v1, k2 => v2, ... kn=vn));
I want to make one of the key value pairs, conditional upon some circumstances.
Can I do this without creating a variable for the array (and this breaking the clean config syntax that someone else had created)?
Like this
callThatFunction ( array(
k1 => v1,
if($cond( {k2 => v2,}
...
kn=vn));
The above is obviously wrong syntactically, but should express my idea.
Thank you
Call Array. Another way to conditionally add items conditionally to a JavaScript array is to use the push method. Then 'bar' is appended to items but 'false' isn't . This is because the first conditionally has true as the conditional and the 2nd one has false as the condition. Therefore items is [“foo”, “bar”] again.
Create array with essential elements. Then add conditional elements to the array. Now add other elements if required.
you cannot put an if inside an array like that.
You can use the includes() method in JavaScript to check if an item exists in an array. You can also use it to check if a substring exists within a string. It returns true if the item is found in the array/string and false if the item doesn't exist.
You can use the conditional operator cond ? true-expr : false-expr
:
$someConfig = array(
'k1' => 'v1',
'k2' => $cond ? 'v2a' : 'v2b'
);
The conditional expression $cond ? 'v2a' : 'v2b'
will yield 'v2a'
if $cond
evaluates to true and 'v2b'
otherwise. But this works only with the value of a key.
If you only want to add a key based on a condition, you need to use a separate if
:
$someConfig = array('k1' => 'v1');
if ($cond) {
$someConfig['k2'] = 'v2';
}
Edit You can add keys conditionally without a variable using the array union operator or array_merge
:
array('k1' => 'v1') + ($cond ? array('k2' => 'v2') : array())
array_merge(array('k1' => 'v1'), $cond ? array('k2' => 'v2') : array())
Now you need to decide what’s more readable or better to maintain.
Eventually I came up with the following:
callThatFunction( array(k1 => v1, k2 => v2, ... kn=vn) + ($cond ? array(key=>value) : array()) )
Will still appreciate a suggestion for somethings that will express the intention more directly
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With