質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

解決済

2回答

1588閲覧

DBテーブルの一覧をPHPで出したいが、配列から抽出出来ない。

scrollman

総合スコア83

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

0クリップ

投稿2018/09/01 00:02

編集2018/09/01 18:47

実現したいこと

Wordpressでデータベースを扱うシステムを構築しております。
以下のソースにて、データベースからテーブルの一覧を受け取り、

var_dump($a_course);

によれば

array(1) { ["Tables_in_hogehoge-hogehoge"]=> string(14) "consumercourse" }

と、どうやら配列だったようなので配列から取り出す為に
array_column($a_course, 'Tables_in_hogehoge-hogehoge');で、T
ables_in_hogehoge-hogehogeから抜き出そうとしましたが
Array ( ) と表示されなんだか抽出出来ていないご様子でした。
どうすれば抽出できますでしょうか、教えてくださると助かります。

PHP

1try{ 2 $pdo = new PDO("mysql:dbname=$db_datebase_6;host=$db_address_3;charset=utf8",$db_user,$db_password); 3 $stmt = $pdo->query('SHOW TABLES'); 4 print('<table class="client-table" border="1">'); 5 while($a_course = $stmt->fetch(PDO::FETCH_ASSOC)){ 6 print('<tr>'); 7 print('<td>'); 8 var_dump($a_course); 9 print '<br>'; 10 $courseid = array_column($a_course, 'Tables_in_hogehoge-hogehoge'); 11 print_r($courseid); 12 print('</td>'); 13 print('<td>'); 14 echo'コースを編集する'; 15 print('</td>'); 16 print('<td>'); 17 echo'コースを消去する'; 18 print('</td>'); 19 print('</tr>'); 20 echo '<br>'; 21 } 22 print('</table>'); 23}catch(PDOException $e){ 24 var_dump($e); 25 echo 'エラーが発生しました。'; 26}

試してみたこと

print_rあたりでは⇓を参考にいたしました。
http://php.net/manual/ja/function.array-column.php

なんだか根本的に理解していない/勘違いしているところがあるかと思いますが、何卒ご容赦くださいませ。

心当たり

array_columnを配列から抽出してくれるものとして使いましたが違うのですかね?

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

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

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

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

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

m.ts10806

2018/09/01 06:54

array_columnはどのような意図で使われたのでしょうか
scrollman

2018/09/01 18:42

配列から抽出するのがarray_columnかな、と…
guest

回答2

0

php

1<?php 2ini_set('display_errors', true); 3error_reporting(E_ALL); 4$dsn = 'mysql:host=localhost;dbname=sample;charset=utf8mb4'; 5$pdo = new PDO($dsn 6 , 'root' 7 , 'password' 8 , [ 9 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 10 , PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_COLUMN 11 ] 12); 13$stmt = $pdo->query('SHOW TABLES'); 14$rows = $stmt->fetchAll(); 15?> 16<!DOCTYPE HTML> 17<html lang="ja"> 18 <head> 19 <meta charset="UTF-8"> 20 <title>Sample</title> 21 </head> 22 <body> 23 <div> 24 <table> 25 <thead> 26 <tr> 27 <th></th> 28 </tr> 29 </thead> 30 <tbody> 31 <?php foreach ($rows as $row): ?> 32 <tr> 33 <td><?php echo $row; ?></td> 34 </tr> 35 <?php endforeach; ?> 36 </tbody> 37 </table> 38 </div> 39 </body> 40</html>

投稿2018/09/01 03:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

array_columnのマニュアルに引数の配列は多次元配列(配列の配列)と記載されているのですが、引数に渡している配列が1次元の配列のため取得できないのでしょうか!
http://php.net/manual/ja/function.array-column.php

値を取り出したい多次元配列 (あるいはオブジェクトの配列)。

php

1$a_course = ["Tables_in_hogehoge-hogehoge" => "consumercourse"]; 2$id = array_column($a_course, "Tables_in_hogehoge-hogehoge"); 3var_dump($id); 4 5/* 6array(0) { 7} 8*/

下記のように配列の中に配列があるものであれば、array_columnで取得ができると思います。

php

1$a_course = [ 2 [ 3 "Tables_in_hogehoge-hogehoge" => "consumercourse1" 4 ], 5 [ 6 "Tables_in_hogehoge-hogehoge" => "consumercourse2" 7 ], 8]; 9var_dump($a_course2); 10 11/* 12array(2) { 13 [0]=> 14 array(1) { 15 ["Tables_in_hogehoge-hogehoge"]=> 16 string(15) "consumercourse1" 17 } 18 [1]=> 19 array(1) { 20 ["Tables_in_hogehoge-hogehoge"]=> 21 string(15) "consumercourse2" 22 } 23} 24*/ 25 26$ids = array_column($a_course2, "Tables_in_hogehoge-hogehoge"); 27var_dump($ids); 28 29/* 30array(2) { 31 [0]=> 32 string(15) "consumercourse1" 33 [1]=> 34 string(15) "consumercourse2" 35} 36*/

ご存知かもしれませんが1次元の配列であればkeyを指定してあげれば取得できます。

var_dump($a_course["Tables_in_hogehoge-hogehoge"]); /* string(14) "consumercourse" */

投稿2018/09/01 03:00

編集2018/09/01 03:03
bbbb

総合スコア26

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

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

scrollman

2018/09/01 18:57

お陰様にきれいに抽出できました!! ご丁寧にありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問