ネストされた三項演算子を使用しないことを強くお勧めします。あなたが知っているように、それらは読みにくいです。ここで適切な if ステートメントに変換すると、確実に読みやすくなります。分解しやすくするために、少しフォーマットすることから始めることができます。
$cust->is_company() ?
'TekCustomer__'.($cust->getID() ? $cust->getID() : 'new'.($next_new_id-1)) :
'Person__'.($cust->people[0]->getID() ? $cust->people[0]->getID() : 'new'.$next_new_id++)
あはは!実際には、最初に見えるほど恐ろしい引用ではありません (特に、ネストされた 3 項* に対する PHP の奇妙な動作のため)。
まず$cust->is_company()
、2 つのことのいずれかをチェックして実行します。これにより、次のことがわかります。
if($cust->is_company()){
'TekCustomer__'.($cust->getID() ? $cust->getID() : 'new'.($next_new_id-1));
}else{
'Person__'.($cust->people[0]->getID() ? $cust->people[0]->getID() : 'new'.$next_new_id++)
}
ここで、通常、値を使用して何かを行うことに注意してください。これは、式が最初にどのように使用されたかによって異なります。
内部 3 項は、読者の演習として残しておきます。
*PHP は、ネストされた三項演算子を右から左ではなく左から右に解決します。http://php.net/manual/en/language.operators.comparison.phpを参照してください。