🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2249閲覧

basenameを使いファイルを配列で取り出したい。

T-Heisenberg

総合スコア7

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/10/17 10:53

前提・実現したいこと

fuelphpを使用

変数に配列で入ったファイルのパス名をforeachbasename関数を使ってファイル名を配列で取り出したいです。

###ソースコード

php

1else { 2 $result = $this->__fileUp(null, null); 3 $filename= []; 4 $url= []; 5 if (! $result) {throw new RuntimeException('upload failed', 500);} 6 7 Log::debug($result, "Controller_Admin_Ticket::post_fileup() - __fileUp"); 8 foreach($result as $results){ 9 $filename = basename($results); 10 }; 11 $url = Components_S3::getUrl(sprintf('%d/ticket/_tmp/%s', Auth::get_contract_id(), $filename), false); 12 Log::debug(['filename' => $filename]); 13 return Response::forge(json_encode(['success' => true, 'url' => $url]), 200, ['Content-Type' => 'application/json']); 14 15 } 16 }

問題点

foreach($result as $results){ $filename = basename($results);

デバッグ

$resultには複数配列で入っているのですが、
$filenameをデバッグしてみても一つしか入っていません。なぜ配列で入っていないのでしょうか。
また配列で変数に入れる方法はないのでしょうか。

試したこと

pathinfo関数も使用してみたのですが結果は同じでした。

補足情報

初心者な為ソースコードが見ずらかったり、情報が足りないかもしれません。ご了承ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/10/17 13:09

「補足情報」にはフレームワークや言語のバージョンなど、環境に関する情報を書くようにしてください。
T-Heisenberg

2019/10/17 15:41

詳しく教えていただきありがとうございます。 以後、気をつけます。
guest

回答1

0

ベストアンサー

php

1$filename = basename($results);

php

1$filename[] = basename($results);

投稿2019/10/17 10:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T-Heisenberg

2019/10/17 11:16 編集

回答ありがとうございます。 $filename[] = basename($results); でやってみたのですが、エラーがでてしまいました。 最初のほうに $filename= []; で定義してあるのですがこれではいけないのでしょうか。
退会済みユーザー

退会済みユーザー

2019/10/17 11:15

エラーメッセージを記述してください。
T-Heisenberg

2019/10/17 11:18 編集

ERROR - 2019-10-17 20:11:37 --> Controller_Admin_Ticket::post_fileup() - Array ( [message] => exception 'Fuel\Core\PhpErrorException' with message 'Array to string conversion' in /opt/domains/app/chatplus/webfront/fuel/app/classes/controller/admin/ticket.php:1668 Stack trace: #0 /opt/domains/app/chatplus/webfront/fuel/core/bootstrap.php(109): Fuel\Core\Error::error_handler(8, 'Array to string...', '/opt/domains/ap...', 1668) #1 [internal function]: {closure}(8, 'Array to string...', '/opt/domains/ap...', 1668, Array) #2 /opt/domains/app/chatplus/webfront/fuel/app/classes/controller/admin/ticket.php(1668): sprintf('%d/ticket/_tmp/...', 61, Array) #3 [internal function]: Controller_Admin_Ticket->post_fileup() #4 /opt/domains/app/chatplus/webfront/fuel/core/classes/request.php(443): ReflectionMethod->invokeArgs(Object(Controller_Admin_Ticket), Array) #5 /opt/domains/app/chatplus/webfront/public/index.php(73): Fuel\Core\Request->execute() #6 /opt/domains/app/chatplus/webfront/public/index.php(103): {closure}() #7 {main} [os] => Windows [ua] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36 [file] => /opt/domains/app/chatplus/webfront/fuel/app/classes/controller/admin/ticket.php:L1681
退会済みユーザー

退会済みユーザー

2019/10/17 11:18

1668行目ってどこ?
T-Heisenberg

2019/10/17 11:20

$url = から始まる文になります。
退会済みユーザー

退会済みユーザー

2019/10/17 11:24 編集

$url = Components_S3::getUrl(sprintf('%d/ticket/_tmp/%s', Auth::get_contract_id(), $filename), false); ここのことなら、質問内容に関係のないエラーですよ。 $filename は配列になっているんだから、sprinf() の引数にできませんよね?
T-Heisenberg

2019/10/17 11:26

エラーがでてデバックがみれないのですが、 $filename[] = basename($results); これで配列の形で入れることができているのでしょうか。
T-Heisenberg

2019/10/17 11:30

なるほど。理解いたしました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問