2017-09-29 9 views
0

この質問には頭がおかしいと思いますが、私はお詫び申し上げます。私はまだPHPのより多くのインとアウトを学んでいます。時々値が存在しない場合のPHPでの配列値の結合

私はCSVファイルを取り込んでいるコードスニペットを持っています。このCSVファイルは、外部ソースからダウンロードしたユーザーがアップロードします。 CSVファイルでは、人の名字と姓は別々の列に分割されません。そのため、PHPで以下が使用されている:

$member_name = explode(" ", $application_data[5]); 

問題は、このデータはその後、メンバーに手紙を送るためにPDFドキュメントをレンダリングするために使用されたときに彼らの最後の名前がある場合、それは彼らの最後の名前を遮断することです二つの単語。

情報を使って、姓と名のフィールドを持つPDFドキュメントにロードされます。

$member_name[0], 
$member_name[1]       

は私が安全に行うことができます。

$member_name[0],  
$member_name[1] + $member_name[2] 

メンバーの99%がない場合でも、姓のスペースがありませんか?メンバー名[2]が存在しないというエラーが表示されますか?これは99%完了しましたか?

私はarray_mergeで検索しました。それはより良い選択ですか?私はあなたが存在しないものを追加して空白を描いているときに、PHPがどのように処理するかを検索しようとしています。

私のソリューションがうまくいくとは思っていません。明日のCSVファイルをアップロードすると、エラーが発生します。

これは間違ったやり方ですが、PDF文書をレンダリングする前に、$ member_name [2]が存在するかどうかを判断するif文を実行する必要があります。

ありがとうございました!

+0

'$ member_name [1]。 ($ member_name [2] ?? "") 'はnullを空の文字列に合併し、エラーは発生しません。 –

+1

スレッドに何も追加しないので、答えとしてポストしたくないのですが、array_columnを使ってファーストネームを取得し、配列の "残りの部分"(姓)をインボードすることができます。 – Andreas

+0

@Andreas +1は 'array_column'の無償使用です。 –

答えて

1

あなたの爆発のリミッターを使用して、最初のスペースでのみ分離することができます。ここに例があります。

$name = "George The King"; 
print_r(explode(' ', $name, 2)); //prints -> Array ([0] => George [1] => The King) 
+0

私たちが基本的に同じことを言っていることを考えると、私にはあなたにアップフォートを与えないのは馬鹿げているようです。 "この回答は役に立ちます" :) –

3

explodeのlimitパラメータは、最初のスペースでのみ分割するように使用できます。もちろん

$member_name = explode(" ", $application_data[5], 2); 

最初の名前も複数の単語を持っている場合、これはまだかなり右ではありません。名前は厄介です。

array_mergeに関しては、この状況では本当に便利ではないと思います。

+0

恐ろしい、ありがとう!私はこれを試し、結果が何であるかを見てみましょう。私はあなたの迅速な対応に感謝します! –

関連する問題