亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP中將多維數組轉換為條件表達式

PHP中將多維數組轉換為條件表達式

PHP
函數式編程 2021-09-18 16:02:25
我正在嘗試將數組轉換為類似條件的表達式字符串,該字符串將在JS Filtrex庫中使用。JS 部分與此問題無關。以下是我正在嘗試使用的示例 PHP 數組。$condition = array(    'and',    array(        array(            'field' => 'show_image',            'compare' => '==',            'value' => 1        ),    ),    array(        'or',        array(            'field' => 'filter',            'compare' => '!=',            'value' => 1        ),        array(            'field' => 'align',            'compare' => '==',            'value' => 'left'        )    ));結果字符串將是這樣的:show_image == 1 and ( filter != 1 or align == "left" )我不賣數組結構,所以你可以自由修改數組,只要它可以用更多條件擴展。提前致謝。
查看完整描述

2 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

我不知道它是否適用于所有情況,但在您的情況下效果很好(我猜)


我建議你刪除嵌套數組$condition[1]并直接寫入$condition[1][0]數組(新的數組結構在下面的代碼中)


<?php


$condition = array(

    'and',

    array(

            'field' => 'show_image',

            'compare' => '==',

            'value' => 1

    ),

    array(

        'or',

        array(

            'field' => 'filter',

            'compare' => '!=',

            'value' => 1

        ),

        array(

            'field' => 'align',

            'compare' => '==',

            'value' => 'left'

        )

    )

);


function generateExpression( Array $condition ) : String

{

 return $condition['field'] . " " . $condition['compare'] . " " . $condition['value'];

}


function generateConditionExpression ( Array $conditionTree ) : String

{

  if ( array_key_exists("field",$conditionTree)  ) 

  {

     return generateExpression($conditionTree);

  }

  //else

  return "(" . generateConditionExpression( $conditionTree[1] ) . " " . $conditionTree[0] . " " . generateConditionExpression( $conditionTree[2] ) . ")";


}


echo generateConditionExpression($condition);


查看完整回答
反對 回復 2021-09-18
  • 2 回答
  • 0 關注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號