如果语句在数组内?

时间:2016-11-23 10:06:26

标签: php arrays

我有一个数组,每个数组都有一个值。

以下是此示例:

$sales_payload = array(
    'organization_id' => $organization_id,
    'contact_id' => $contact_id,
    'status' => 'Open',
    'subject' => $_product->post_title." ".str_replace($strToRemove, "", $_POST['billing_myfield12']),
    'start_date' => date("Y-m-d"), // set start date on today
    'expected_closing_date' => date("Y-m-d",strtotime(date("Y-m-d")."+ 14 days")), // set expected closing date 2 weeks from now
    'chance_to_score' => '10%',
    'expected_revenue' => 0, //set the expected revenue
    'note' => $_POST['order_comments'],

    'progress' => array(
    'id'=>'salesprogress:200a53bf6d2bbbfe' //fill a valid salesprogress id to set proper sales progress 
    ),

    "custom_fields"=> [[ 
    if(strpos($_POST['billing_myfield13'], 'ja') !== false) { [["actief_in_duitsland"=>1]] }
    ]]
);

我现在正试图在我的代码中填充某个数组:

"custom_fields"=>  [["actief_in_duitsland"=>1]] 

这很有效。唯一的问题是我希望在特定条件下值为>> 1。 这种情况是,如果某个POST请求包含某个字符串,则将值=> 1

我试过了:

"custom_fields"=> [[ 
if(strpos($_POST['billing_myfield13'], 'ja') !== false) { [["actief_in_duitsland"=>1]] }
]] 

所以

if(strpos($_POST['billing_myfield13'], 'ja') !== false) { [["actief_in_duitsland"=>1]] }

如果$_POST['billing_myfield13']包含单词'ja'

然后[["actief_in_duitsland"=>1]]

2 个答案:

答案 0 :(得分:3)

您可以使用三元条件,这是if语句的快捷方式。以下是三元条件如何工作的示例:

常规if会这样写:

if( "mycondition" == 1 )
{
    $boolean = true;
}
else {
    $boolean = false;
}

具有三元条件的此语句的等效内容将如下所示:

$boolean = ( "mycondition" == 1 ) ? true : false;

您可能希望使用此快捷方式实现数组,如下所示:

$sales_payload = [
    // ...
    'custom_fields' => ( strpos($_POST['billing_myfield13'], 'ja') !== false ) ? [['actief_duitsland' => 1]] : [['actief_duitsland' => '???']],
    // ...
];

警告

您还应为此声明定义else值。

答案 1 :(得分:2)

如果数组中的语句不起作用,您可以尝试以下代码

    $actief_in_duitsland = (strpos($_POST['billing_myfield13'], 'ja') !== false)  ? 1 : 0;

$sales_payload = array(
    'organization_id' => $organization_id,
    'contact_id' => $contact_id,
    'status' => 'Open',
    'subject' => $_product->post_title." ".str_replace($strToRemove, "", $_POST['billing_myfield12']),
    'start_date' => date("Y-m-d"), // set start date on today
    'expected_closing_date' => date("Y-m-d",strtotime(date("Y-m-d")."+ 14 days")), // set expected closing date 2 weeks from now
    'chance_to_score' => '10%',
    'expected_revenue' => 0, //set the expected revenue
    'note' => $_POST['order_comments'],

    'progress' => array(
    'id'=>'salesprogress:200a53bf6d2bbbfe' //fill a valid salesprogress id to set proper sales progress 
    ),

    "custom_fields"=> [['actief_in_duitsland' => $actief_in_duitsland]]
);