2016-11-30 17 views
3

APIを使用しているIm。 配列を使用してデータを収集してから、私が使用しているソフトウェアにデータを送信します。私はキーが配列内に存在するかどうかを調べる

$tet = $SimplicateApi->makeApiCall('GET','/crm/person?q[first_name]=Kevin1'); 

、その後var_dump($tet);

:私はこのような代わりに、POSTのGET呼び出しを行うと

$pers_payload = array(
    'gender' => 'Unknown', //or Male/Female 
    'first_name' => $_POST['billing_first_name'], 
    'family_name' => $_POST ['billing_last_name'], 
    'email' => $_POST['billing_email'], 
    'linked_as_contact_to_organization' => array(
     array(
      'organization_id' => $organization_id, // add the person as a contact to the newly created organization 
      'work_email' => $_POST['billing_email'], 
      'work_phone' => $_POST['billing_phone'] 
      ) 
     ), 
    'visiting_address' => array(
     'country_code'   => 'NL' 
     ), // can be extented with other address data 
    'postal_address' => array(
     'country_code'  => $_POST['billing_country'] 
    ) // can be extented with other address data 
); 

それから私はこの

// add the person to CRM 

    $person = $SimplicateApi->makeApiCall('POST','/crm/person',json_encode($pers_payload)); 

のようにそれを送信します。このようなそれはいわゆる多次元配列を返します:

array(3) { 
    ["data"] => array(2) { 
     [0] => array(11) { 
      ["id"] => string(39) 
      "person:067af3bd2045824e62ac579e634623b8" ["interests"] => array(1) { 
       [0] => array(3) { 
        ["value"] => bool(false)["id"] => string(25) 
        "interest:f278f47e6e9d48b8" ["name"] => string(19) 
        "Actief in Duitsland" 
       } 
      }["simplicate_url"] => string(51) 
      "https://emark.simplicate.nl/crm/person/view?id=3552" ["avatar"] => array(2) { 
       ["initials"] => string(2) 
       "Kt" ["color"] => string(7) 
       "#03e084" 
      }["linked_as_contact_to_organization"] => array(1) { 
       [0] => array(7) { 
        ["id"] => string(46) 
        "contactperson:0f16f418f1845749c79bebf9e1e753e5" ["organization_id"] => string(45) 
        "organization:8632b86ba41637262e0871767f96f43e" ["name"] => string(9) 
        "testing12" ["work_email"] => string(24) 
        "[email protected]" ["work_phone"] => string(8) 
        "06269684" ["work_mobile"] => string(8) 
        "06269684" ["interests"] => array(16) { 
         [0] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:456e8b19c0079647" ["name"] => string(11) 
          "Twinkle 100" 
         }[1] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:a70e69b83382e85a" ["name"] => string(17) 
          "Bekend merk in NL" 
         }[2] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:ce50f1b5593ac180" ["name"] => string(15) 
          "Cross Border 30" 
         }[3] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:f40eca1b281969d6" ["name"] => string(20) 
          "Meerdere vestigingen" 
         }[4] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:7435d7409a07cefb" ["name"] => string(26) 
          "Meer dan 100k in Duitsland" 
         }[5] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:cc072cea856ea23a" ["name"] => string(17) 
          "B2B leadgeneratie" 
         }[6] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:f278f47e6e9d48b8" ["name"] => string(19) 
          "Actief in Duitsland" 
         }[7] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:9bbeb23d17283595" ["name"] => string(10) 
          "Exporteert" 
         }[8] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:97ed988af66b1abc" ["name"] => string(8) 
          "Debiteur" 
         }[9] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:3e31ffca2394bc38e1bb3149bee8b668" ["name"] => string(9) 
          "Marketing" 
         }[10] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:706fa5fa92c56081e1bb3149bee8b668" ["name"] => string(6) 
          "Amazon" 
         }[11] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:05f1a5da1c4c7df2e1bb3149bee8b668" ["name"] => string(3) 
          "Jur" 
         }[12] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:477554ee16a0c738e1bb3149bee8b668" ["name"] => string(11) 
          "Vertalingen" 
         }[13] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:f5f1b7512245a3b5e1bb3149bee8b668" ["name"] => string(5) 
          "Adres" 
         }[14] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:d1123dfaa0073c82e1bb3149bee8b668" ["name"] => string(4) 
          "GmbH" 
         }[15] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:7d3458131ea89afbe1bb3149bee8b668" ["name"] => string(3) 
          "Web" 
         } 
        } 
       } 
      }["gender"] => string(7) 
      "Unknown" ["first_name"] => string(6) 
      "Kevin1" ["family_name"] => string(7) 
      "testing" ["full_name"] => string(14) 
      "Kevin1 testing" ["email"] => string(24) 
      "[email protected]" ["phone"] => string(8) 
      "06269684" 
     }[1] => array(11) { 
      ["id"] => string(39) 
      "person:067af3bd2045824ea8c16e7ea0baf9d6" ["interests"] => array(1) { 
       [0] => array(3) { 
        ["value"] => bool(false)["id"] => string(25) 
        "interest:f278f47e6e9d48b8" ["name"] => string(19) 
        "Actief in Duitsland" 
       } 
      }["simplicate_url"] => string(51) 
      "https://emark.simplicate.nl/crm/person/view?id=3553" ["avatar"] => array(2) { 
       ["initials"] => string(2) 
       "Kt" ["color"] => string(7) 
       "#dce1f3" 
      }["linked_as_contact_to_organization"] => array(1) { 
       [0] => array(7) { 
        ["id"] => string(46) 
        "contactperson:f48fdcaaff0211e728a2e4ccf197900b" ["organization_id"] => string(45) 
        "organization:8632b86ba41637262e0871767f96f43e" ["name"] => string(9) 
        "testing12" ["work_email"] => string(24) 
        "[email protected]" ["work_phone"] => string(8) 
        "06269684" ["work_mobile"] => string(8) 
        "06269684" ["interests"] => array(16) { 
         [0] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:456e8b19c0079647" ["name"] => string(11) 
          "Twinkle 100" 
         }[1] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:a70e69b83382e85a" ["name"] => string(17) 
          "Bekend merk in NL" 
         }[2] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:ce50f1b5593ac180" ["name"] => string(15) 
          "Cross Border 30" 
         }[3] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:f40eca1b281969d6" ["name"] => string(20) 
          "Meerdere vestigingen" 
         }[4] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:7435d7409a07cefb" ["name"] => string(26) 
          "Meer dan 100k in Duitsland" 
         }[5] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:cc072cea856ea23a" ["name"] => string(17) 
          "B2B leadgeneratie" 
         }[6] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:f278f47e6e9d48b8" ["name"] => string(19) 
          "Actief in Duitsland" 
         }[7] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:9bbeb23d17283595" ["name"] => string(10) 
          "Exporteert" 
         }[8] => array(3) { 
          ["value"] => bool(false)["id"] => string(25) 
          "interest:97ed988af66b1abc" ["name"] => string(8) 
          "Debiteur" 
         }[9] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:3e31ffca2394bc38e1bb3149bee8b668" ["name"] => string(9) 
          "Marketing" 
         }[10] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:706fa5fa92c56081e1bb3149bee8b668" ["name"] => string(6) 
          "Amazon" 
         }[11] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:05f1a5da1c4c7df2e1bb3149bee8b668" ["name"] => string(3) 
          "Jur" 
         }[12] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:477554ee16a0c738e1bb3149bee8b668" ["name"] => string(11) 
          "Vertalingen" 
         }[13] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:f5f1b7512245a3b5e1bb3149bee8b668" ["name"] => string(5) 
          "Adres" 
         }[14] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:d1123dfaa0073c82e1bb3149bee8b668" ["name"] => string(4) 
          "GmbH" 
         }[15] => array(3) { 
          ["value"] => bool(false)["id"] => string(41) 
          "interest:7d3458131ea89afbe1bb3149bee8b668" ["name"] => string(3) 
          "Web" 
         } 
        } 
       } 
      }["gender"] => string(7) 
      "Unknown" ["first_name"] => string(6) 
      "Kevin1" ["family_name"] => string(7) 
      "testing" ["full_name"] => string(14) 
      "Kevin1 testing" ["email"] => string(24) 
      "[email protected]" ["phone"] => string(8) 
      "06269684" 
     } 
    }["errors"] => NULL["debug"] => NULL 
} 

私の問題は、私は、配列キーfirst_name$tet

私の試みの内側に存在する場合は、POSTリクエストを作りたいいけないです:あなたが使用することができます

$pers_payload = array(
    'gender' => 'Unknown', //or Male/Female 
    'first_name' => $_POST['billing_first_name'], 
    'family_name' => $_POST ['billing_last_name'], 
    'email' => $_POST['billing_email'], 
    'linked_as_contact_to_organization' => array(
     array(
      'organization_id' => $organization_id, // add the person as a contact to the newly created organization 
      'work_email' => $_POST['billing_email'], 
      'work_phone' => $_POST['billing_phone'] 
      ) 
     ), 
    'visiting_address' => array(
     'country_code'   => 'NL' 
     ), // can be extented with other address data 
    'postal_address' => array(
     'country_code'  => $_POST['billing_country'] 
    ) // can be extented with other address data 
); 

// add the person to CRM 
$tet = $SimplicateApi->makeApiCall('GET','/crm/person?q[first_name]=Kevin1'); 

foreach ($tet['data'] as $data) { 
    if (array_key_exists('first_name', $data)) { 
     echo "found key 'first_name' with value '" . $data['first_name'] . "'\n"; 
    } else { 
     // perform your post request 
     $person = $SimplicateApi->makeApiCall('POST','/crm/person',json_encode($pers_payload)); 
    } 
} 
+0

さて、あなたは外側の配列から 'data'要素を選択し、そのメンバーを反復処理して。 'isset()'または 'array_key_exists()'のどちらかを使って、探しているキーが存在するかどうかをチェックします。私にはかなりまっすぐに見える... – arkascha

+0

私はPHPで実際に進んでいないいくつかのものは私にまっすぐ前方に見ていない:L @arkascha –

+0

確かに、私たちはすべてすべての時間を学ぶ。大丈夫だ。私が提案したことに従うことができますか? – arkascha

答えて

3

外部配列($tet['data'])からデータ要素を選択し、そのメンバーを反復処理します。配列は本当に大きいですし、そのように、コードスケールのメモリ消費量を低く抑えるたい場合

foreach ($tet['data'] as $data) { 
    if (array_key_exists('first_name', $data)) { 
     echo "found key 'first_name' with value '" . $data['first_name'] . "'\n"; 
    } else { 
     // perform your post request 
    } 
} 

:あなたが探しているキーがisset()またはarray_key_exists()機能のいずれかを使用して存在している場合、それぞれでは、チェックここであなたの追加のコメントに基づいて

foreach (array_keys($tet['data']) as $key) { 
    if (array_key_exists('first_name', $tet['data'][$key])) { 
     echo "found key 'first_name' with value '" . $tet['data'][$key]['first_name'] . "'\n"; 
    } else { 
     // perform your post request 
    } 
} 

:うまくあなただけの配列のキーではなく、複雑な値を反復処理することにより、データのコピーを防止することができますあなたの実際の質問は別のものであることが判明しました。おそらく、しかし、単純な大文字小文字を区別しない文字列比較を追加するのに十分である:

foreach (array_keys($tet['data']) as $key) { 
    if ( array_key_exists('first_name', $tet['data'][$key]) 
     && (strcasecmp($tet['data'][$key]['first_name'], 'Kevin1') == 0)) { 
     echo "found key 'first_name' with value '" . $tet['data'][$key]['first_name'] . "'\n"; 
    } else { 
     // perform your post request 
    } 
} 
+0

私はそれを解決する方法を知っていますが、あなたのコードにエラーがありますパーズエラー:構文エラー、予期しない '"' \ n" (T_CONSTANT_ENCAPSED_STRING)、 '、'または ';'が必要です –

+0

@ケビン。私の愚かなキーボードドライバが自動補完を主張した結果、 – arkascha

+0

は依然としてPOST要求イベントを実行しています。私が入力した名前は$ tet –

1

array_key_existsfunction

if (array_key_exists('first_name', $pers_payload)) { 
 
    echo 'Can not perform this task'; 
 
}else{ 
 
\t $person = $SimplicateApi->makeApiCall('POST','/crm/person',json_encode($pers_payload)); 
 
}

+0

これは_value_ '' first_name "を検索し、OPはその名前の_key_を参照します。 – arkascha

+1

訂正のための@arkascha、ありがとう – Muya

+0

より良いですが、' $ pers_payload'はOPが参照している配列ではありません。少なくともそれは私が質問を理解した方法です。質問の最後の文を読んでください... – arkascha

関連する問題